簡體   English   中英

foreach 循環中的數組執行錯誤:

[英]Error in Array execution in foreach loop :

有人請幫我更正此代碼中的錯誤 這是我試圖查找庫存冰淇淋名稱的代碼

<?php
$flavors = array();
$flavors[]=array("name" => "CD" , "in_stock" => true);
$flavors[]=array("name" => "V"  , "in_stock" => true);
$flavors[]=array("name" => "S"  , "in_stock" => false);

foreach($flavors as $flavor => $value) {
if($flavor["in_stock"] == true) {
    echo $flavor["name"] . "\n";
  }
}
?>

采用

<?php
$flavors = array(
array("name" => "CD" , "in_stock" => true),
array("name" => "V"  , "in_stock" => true),
array("name" => "S"  , "in_stock" => false));

foreach($flavors as $flavor){
    if ($flavor['in_stock'] == true) {
        echo $flavor['name']."\n";
    }
}
?>

代替

foreach($flavors as $flavor => value){

您正在使用multimentionals數組,以使用您的aproach(=> value):

foreach ($flavors as $flavor => $value) {
if ($value['in_stock'] == true) {
    echo $value['name']."\n";
 }
}

PHP數組

你有平坦的非關聯數組,這意味着你不需要使用$key => $value迭代,而只需要$item

所以在你的情況下修復很簡單:

https://ideone.com/j7RMAH

...
// foreach ($flavors as $flavor => $value) {
foreach ($flavors as $flavor) {
...

foreach() - foreach還會在每次迭代時將當前元素的鍵分配給$key變量

foreach (array_expression as $key => $value)
    statement

注意: 您可以使用任何變量,不必使用名為$key的變量

您正在使用條件$flavor["in_stock"]的密鑰和$flavor["name"]的密鑰。 你需要使用持有當前迭代array $value ,正確使用foreach為你的代碼

foreach($flavors as $flavor => $value) {
  if($value["in_stock"] == true) {
    echo $value["name"] . "\n";
 }
}

為什么要迭代? 可以使用條件過濾數組:

<?php

$flavors = [];
$flavors[] = ['name' => 'CD', 'in_stock' => true];
$flavors[] = ['name' => 'V',  'in_stock' => true];
$flavors[] = ['name' => 'S',  'in_stock' => false];

$inStock = array_filter($flavors, function (array $flavor) {
    return $flavor['in_stock'];
});

print_r($inStock);

$inStockFlavors = array_column($inStock, 'name');

print_r($inStockFlavors);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM