2012-04-24 12 views
2

私はPHP(以下の例の出力)での$ ingredient_differenceという名前の次の配列があります。私は「foreachのを使用してidrecipeの少なくとも値を抽出しようとしている適切な構文連想配列と

Array (
    [total_remaining_ingredients] => Array (
    [0] => 2 [1] => 3 [2] => 10 
) 
    [idrecipe] => Array (
    [0] => 8 [1] => 10 [2] => 9 
) 
    [value] => Array ([0] => 1 [1] => 1 [2] => 1) 
) 

を」、私は次のコードで未定義のインデックスを取得しています:

foreach($ingredient_difference as $recipe_output) 
{ 
    echo $recipe_output['idrecipe']."<br />"; 
} 

私は上記の知っているまさにそれを行うための方法ではありませんが、これはまたのために(未定義のインデックスエラーが働いていませんでした 『idrecipe』 'value'、 'total_remaining_ingredients'):

foreach($ingredient_difference as $c => $rowkey) 
{ 
    $sorted_idrecipe[] = $rowkey['idrecipe']; 
    $sorted_value[] = $rowkey['value']; 
    $sorted_remaining_ingredients[] = $rowkey['total_remaining_ingredients']; 
} 

foreach構文には何がありますか?それとも良い方法がありますか?

このforeach構文も与えている未定義のインデックスエラー:ComFreekへ

foreach($ingredient_difference as $rowkey => $index_value) 
{ 
    $id_value[$key] = $index_value['idrecipe']; 
    $value_value[$key] = $index_value['value']; 
    $tri_value[$key] = $index_value['total_remaining_ingredients']; 
} 

回答感謝:あなたの最初のforeach()ループで

$result_ingredient_difference = array(); 
$count_id = count($ingredient_difference['idrecipe']); 

for ($i=0; $i<$count_id; $i++) 
{ 
    $result_ingredient_difference[] = array(
    'tri' => $ingredient_difference['total_remaining_ingredients'][$i], 
    'idrecipe' => $ingredient_difference['idrecipe'][$i], 
    'value' => $ingredient_difference['value'][$i] 
); 
} 
//rearranged array of $result_ingredient_difference able to call proper indexing with the below 
foreach($result_ingredient_difference as $rowkey => $index_value) 
{ 
    $id_value[$key] = $index_value['idrecipe']; 
    $value_value[$key] = $index_value['value']; 
    $tri_value[$key] = $index_value['tri']; 
} 

答えて

4

は、あなたがメインアレイ上ではなく値を反復しますサブアレイのidrecipe

foreach($ingredient_difference['idrecipe'] as $value) 
{ 
    echo $value; 
} 
+0

感謝。それは間違いなく 'idrecipe'値を取得します。 3つの異なるインデックス(つまり、「idrecipe」、「value」、「total_remaining_ingredients」)を取得するには、どうすればよいでしょうか。私はforeach($ key => $ valueのような$ ingredients_difference)のようなものを使ってトリックをすると思っていましたが、何の成功もありませんでした。 –

+0

あなたは何をしたいですか?エントリが3つしかない場合は、必要ではありません。あなたのforeach()*は正しいですが、間違った方法で特定の値にアクセスすると思います。コードを教えてください。 – ComFreek

+0

'idrecipe'、 'value'、および 'total_remaining_ingredients'の3つの異なるforeachループを実行する代わりに、foreachループを1つだけ構築して3つすべての値を取得する方法があるのか​​と疑問に思った。上記の修正されたコードを参照してください。これは、私に未定義のインデックスエラーを与えています。 –

2

foreachはループを構成します。あなたのコードで

foreach($ingredient_difference as $recipe_output) { 
echo $recipe_output['idrecipe']."<br />"; } 

最初のループの実行中にします。$ recipe_outputは、第2ループの実行中に[total_remaining_ingredients] ingredient_difference $です:$のrecipe_outputは、第3のループの実行中に[idrecipe] ingredient_difference $です:$のrecipe_outputは$ですingredient_difference [値]

あなたがエラーを取得する何

$ingredient_difference['total_remaining_ingredients']['idrecipe'] 
$ingredient_difference['idrecipe']['idrecipe'] 
$ingredient_difference['value']['idrecipe'] 

がないので。私はあなたが何をしたいのか期待どのようにforeachループの作品はhttp://php.net/manual/de/control-structures.foreach.php

上の例を使用し参照するには

は次のとおりです。

foreach($ingredient_difference['idrecipe'] as $value_of_recipe) 
{ 
    echo $value_of_recipe."<br />"; 
}