値とキーの両方を配列に入れる方法

このコードを見てみましょう。

$GET = array();    
$key = 'one=1';
$rule = explode('=', $key);
/* array_push($GET, $rule[0] => $rule[1]); */

私は、このようなものを探しています。

print_r($GET);
/* output: $GET[one => 1, two => 2, ...] */

これを行う関数はありますか?(array_pushではこの方法では動作しませんので)

ソリューション

連想配列では、次のキーを決定する方法がないため、array_push()に相当するものはありません。

次のキーを決定する方法がないので,次のキーを決定するためには

$arrayname[indexname] = $value;
解説 (4)

まさにPekkaが言った通りです。

別の方法としては、array_mergeをこのように使うこともできるでしょう。

array_merge($_GET, array($rule[0] => $rule[1]));

しかし、私はPekka'の方法の方がはるかにシンプルであると思います。

解説 (0)

私も同じものを探していたのですが、私が古い人間であるがゆえに、考え方が違うことに気づきました。私はBASICやPERLまで遡りますが、時々、PHPがいかに簡単かを忘れてしまいます。

私が作ったのは、データベースからすべての設定を取り出し、setkey, item (key) & value (value) の3つの列を、上記のように push を使わずに同じ key/value を使って settings という配列に配置する関数です。

とても簡単でシンプルですね。

前の記事

// すべての設定を取得 $settings=getGlobalSettings()です。

// ユーザーのテーマ選択を適用する $theme_choice = $settings['theme'];

... などなど ....

function getGlobalSettings(){

$dbc = mysqli_connect(wds_db_host, wds_db_user, wds_db_pass) or die("MySQL Error: " . mysqli_error());
mysqli_select_db($dbc, wds_db_name) or die("MySQL Error: " . mysqli_error());
$MySQL = "SELECT * FROM systemSettings";
$result = mysqli_query($dbc, $MySQL);
while($row = mysqli_fetch_array($result)) 
    {
    $settings[$row['item']] = $row['value'];   // NO NEED FOR PUSH
    }
mysqli_close($dbc);

return $settings; }

となっています。

つまり、他の記事で説明されているように...を使用している場合、phpでは配列を"PUSH"する必要はありません。

キー => 値

また、配列を最初に定義する必要もありません。

$array=array()となります。

宣言もプッシュも必要ありません。ただ、$array[$key] = $value; を代入すれば、自動的にプッシュと宣言が同時に行われます。

セキュリティ上の理由から、(P)or (H)elpless (P)rotection、つまりProgramming for Dummies、つまりPHP.... hehehehe 私が意図したことにのみ、このコンセプトを使用することをお勧めします、と付け加えておきます。それ以外の方法では、セキュリティ上のリスクがあります。これで、私の免責事項ができました。

解説 (0)