2016-07-21 29 views
1

私はarray_column配列の要素の順序を保持するので、私は同じ配列で関数を2回呼び出すとき、私は結果の配列が一致すると信じることができますかと思います。私はこの方法で作業する必要があります。コードでは、特定のデータ(この例ではキーの1つ)だけで多くの操作を行う必要があり、結局のところ、(例のidとqtyの) dbに挿入します。PHP配列_列複数のキーが同じ順序ですか?

例:

QUERY: SELECT id, qty FROM items ... 
CONVERTED INTO ASSOCIATIVE ARRAY: 
$array = [ 
    ['id' => 1, 'qty' = 2], 
    ['id' => 2, 'qty' = 4] 
]; 

$itemsIds = array_column($array, 'id'); 
$itemsQty = array_column($array, 'qty'); 

iは?:

for($i = 0; $i < count($array); $i++) { 
    echo $itemsIds[$i] . $itemsQty[$i]; 
} 

を行うことができると私はいつも各項目の正確なデータを得るのだろうか?

$arrayLength = count($array); // Better optimization than do it in every loop 
for($i = 0; $i < $arrayLength; $i++) { 
    echo $array[$i]['id'] . $array[$i]['qty']; 
} 

すべてとすべて一致することをあなたが確認して、それらが行の同じ量を持っているでしょう:あなたはSQLクエリを通じて必要なすべての値を取得し、のようなもので、それを印刷する場合は何

+0

本当にわかりません。つまり、重複した値を取り除く 'array_unique'を使用しているので、答えは' no 'です。つまり、2つの配列が2つの異なる長さになる可能性があります。 – cmorrissey

+0

なぜあなたはそれを単にクエリで取得しないのですか? – Grommy

+1

'array_unique()'は問題になります。なぜなら配列の長さが違うからです。あなたがやっていることをする理由がないようです。説明できますか? – AbraCadaver

答えて

1

DBの結果は行ベースであるため(通常は)、すべての列の値は(NULLであっても)です。何とか結果を混乱させない限り、あなたは安全でなければなりません。私は実際に私のコードのいくつかで同じことをしています。

1

コードからは、array_columnを2回使用すると、そのキーの値が正しく保持されているように思えます。

しかし、あなたの情報のためにあなたは一度だけこのようarray_columnを使用してこれを取得することができます:

$items = array_column($array, 'qty', 'id') 

今、あなたはキーが各列のidと値が各列の数量ですある連想配列を取得します。

array_columnの三番目のパラメータの意味は、返される配列のインデックス/キーとして使用する列

です。この値は、列の整数キーでもよく、文字列キー名でもよい。

あなたはより多くの説明とマニュアルからの例を見つけることができます:あなたは、あなたがそれを助けるかもしれないやろうとしているかを説明することができた場合、あなたの上記のコードでacomplishしようとしているものhttp://php.net/manual/en/function.array-column.php

関連する問題