web-dev-qa-db-ja.com

値とキーの両方を配列にプッシュする方法

このコードを見てください。

$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はこの方法では動作しません)

290
Gal

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

あなたが使用する必要があります

$arrayname[indexname] = $value;
652
Pekka 웃

Pushing配列に値を入れると、自動的にその数値キーが作成されます。

配列にキーと値のペアを追加するとき、あなたはすでにキーを持っています、あなたのためにそれを作成する必要はありません。キーを配列にプッシュしても意味がありません。配列内の特定のキーの値のみを設定できます。

// no key
array_Push($array, $value);
// same as:
$array[] = $value;

// key already known
$array[$key] = $value;
66
deceze

配列を結合し、追加した配列のキーを保持するには、結合演算子(+)を使用できます。例えば:

<?php

$arr1 = array('foo' => 'bar');
$arr2 = array('baz' => 'bof');
$arr3 = $arr1 + $arr2;

print_r($arr3);

// prints:
// array(
//   'foo' => 'bar',
//   'baz' => 'bof',
// );

だからあなたは$_GET += array('one' => 1);を行うことができます。

http://php.net/manual/en/function.array-merge.php のドキュメントに、共用体演算子とarray_mergeの使用方法の詳細があります。

52

私は自分の答えを表に加えたいと思います。

//connect to db ...etc
$result_product = /*your mysql query here*/ 
$array_product = array(); 
$i = 0;

foreach ($result_product as $row_product)
{
    $array_product [$i]["id"]= $row_product->id;
    $array_product [$i]["name"]= $row_product->name;
    $i++;
}

//you can encode the array to json if you want to send it to an ajax call
$json_product =  json_encode($array_product);
echo($json_product);

これが誰かに役立つことを願っています

19
Nassim

まさにペッカが言ったこと...

別の方法として、あなたが望むならおそらくおそらくこのようにarray_mergeを使うことができます:

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

しかし、私はPekkaの方法がおそらくもっと簡単なので好むと思います。

17
jeffff

これはuに役立つかもしれない解決策です

Class Form {
# Declare the input as property
private $Input = [];

# Then Push the array to it
public function addTextField($class,$id){
    $this->Input ['type'][] = 'text';
    $this->Input ['class'][] = $class;
    $this->Input ['id'][] = $id;
}

}

$form = new Form();
$form->addTextField('myclass1','myid1');
$form->addTextField('myclass2','myid2');
$form->addTextField('myclass3','myid3');

あなたがそれを捨てるとき。こんな結果

array (size=3)
  'type' => 
    array (size=3)
      0 => string 'text' (length=4)
      1 => string 'text' (length=4)
      2 => string 'text' (length=4)
  'class' => 
    array (size=3)
      0 => string 'myclass1' (length=8)
      1 => string 'myclass2' (length=8)
      2 => string 'myclass3' (length=8)
  'id' => 
    array (size=3)
      0 => string 'myid1' (length=5)
      1 => string 'myid2' (length=5)
      2 => string 'myid3' (length=5)
7
Faris Rayhan

私はちょうど同じことを探していました、そして、私は古い学校なので、もう一度、私の考えが違うことに気づきました。私はずっとBASICとPerlに戻り、時にPHPが本当に簡単なことを忘れることがあります。

データベースからすべての設定を取得するためにこの関数を作成しました。3列です。 setkey、item(key)&value(value)そして上記のようにPushを使わずに同じkey/valueを使ってsettingsと呼ばれる配列にそれらを配置します。

本当に簡単&シンプル

 
 //すべての設定を取得
 $ settings = getGlobalSettings(); 
 
 
 //ユーザーテーマの選択を適用する
 $ theme_choice = $ settings ['theme']; 
 
 ..などetc etc .... 
 
 
 [。 ] getGlobalSettings(){
 $ dbc = mysqli_connect(wds_db_Host、wds_db_user、wds_db_pass)またはdie( "MySQL Error:"。mysqli_error()); [。 mysqli_select_db($ dbc、wds_db_name)またはdie( "MySQLエラー:"。mysqli_error()); 
 $ MySQL = "SELECT * FROM systemSettings"; 
 $ result = mysqli_query($ dbc、$ MySQL); 
 while($ row = mysqli_fetch_array($ result))
 {
 $ settings [$ row ['item']] = $ row ['value ']; //プッシュする必要はありません[
]} 
 mysqli_close($ dbc); 
] $設定を返す[
} 
] 
 
 ____。]

他の記事が説明しているように... phpでは、使用しているときに配列を「プッシュ」する必要はありません。

キー=>値

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

$ array = array();

定義したりプッシュしたりする必要はありません。 $ array [$ key] = $ valueを代入するだけです。それは自動的にプッシュと宣言です。

セキュリティ上の理由から、(P)または(H)省略(P)の保護は、Programming for Dummiesを意味します。つまり、PHPを意味します。この概念は、意図した目的にのみ使用することをお勧めします。その他の方法でセキュリティ上のリスクが生じる可能性があります。そこに、私の免責事項を作りました!

7
Cory Cullers

少し変ですが、これは私のために働きました

    $array1 = array("Post Slider", "Post Slider Wide", "Post Slider");
    $array2 = array("Tools Sliders", "Tools Sliders", "modules-test");
    $array3 = array();

    $count = count($array1);

    for($x = 0; $x < $count; $x++){
       $array3[$array1[$x].$x] = $array2[$x];
    }

    foreach($array3 as $key => $value){
        $output_key = substr($key, 0, -1);
        $output_value = $value;
        echo $output_key.": ".$output_value."<br>";
    }
4
Bjorn Lottering

少し遅くなりますが、ネストした配列を気にしないのであれば、次のようにします。

$main_array = array(); //Your array that you want to Push the value into
$value = 10; //The value you want to Push into $main_array
array_Push($main_array, array('Key' => $value));

わかりやすくするために、 json_encode($ main_array) と出力すると、 [{"Key": "10"}] のようになります。

4
Pontus B
 $arr = array("key1"=>"value1", "key2"=>"value");
    print_r($arr);

//配列を印刷する['key1' => "value1"、 'key2' => "value2"]

3
sneha

最も簡単な方法がまだ投稿されていないのはなぜでしょうか。

$arr = ['company' => 'Apple', 'product' => 'iPhone'];
$arr += ['version' => 8];

2つの配列を array_mergeとマージするのと同じです。

2
AlexioVay

array_Push($ GET、$ GET ['one'] = 1);

私のために働く

2
aaa

こんにちは私は同じ問題を抱えていた私はこの解決策を見つけるあなたは2つの配列を使用してそれらを両方組み合わせる

 <?php

$fname=array("Peter","Ben","Joe");

$age=array("35","37","43");

$c=array_combine($fname,$age);

print_r($c);

?>

リファレンス: w3schools

2
fantome195

簡単な方法:

$GET = array();    
$key = 'one=1';
parse_str($key, $GET);

http://php.net/manual/de/function.parse-str.php

1
eSlider
array_Push($arr, ['key1' => $value1, 'key2' => value2]);

これはうまく機能します。配列内にその値を持つキーを作成します

1
Mesh Manuel

例array_merge()....

$array1 = array("color" => "red", 2, 4); $array2 = array("a", "b", "color" => "green", "shape" => "trapezoid", 4); $result = array_merge($array1, $array2); print_r($result);

配列([色] =>緑、[0] => 2、[1] => 4、[2] => a、[3] => b、[形状] =>台形、[4] => 4 、)

1
illeas

最初の位置にkeyvalueで追加する

$newAarray = [newIndexname => newIndexValue] ;

$yourArray = $newAarray + $yourArray ;
0

私は簡単な関数を書きました:

function Push(&$arr,$new) {
    $arr = array_merge($arr,$new);
}

新しい要素を簡単に "upsert"できるように

Push($my_array, ['a'=>1,'b'=>2])
0
Elect2