【问题标题】:Foreach only showing last item in arrayForeach 仅显示数组中的最后一项
【发布时间】:2017-01-20 22:37:15
【问题描述】:

我正在尝试创建一个 foreach 循环来迭代数组中的每个项目,但它只捕获最后一个项目而不会迭代第一个项目。我已剥离代码以仅显示相关部分,并添加了一些命令来识别上述问题。

$message == "kk,ll";
$myArray = explode(',', $message);

print_r ($myArray);

foreach ($myArray as $value);
{   
    echo "$value <br>";
    $array[] = $value;
}

print_r ($array);

输出是:

Array ( [0] => kk [1] => ll ) ll 
Array ( [0] => ll )

您可以看到,当我使用print_r() 时,该数组包含两个项目。但是foreach 循环只循环最后一项。将数组元素添加到循环内的新数组中也会得到一个仅包含最后一个元素的数组。我做错了什么?

【问题讨论】:

标签: php arrays foreach


【解决方案1】:

你的代码中有两个错误:

  1. 在第一行中有两个等号,应该只有一个。

  2. 在您的 foreach 循环中,您错误地在末尾添加了一个分号:

foreach ($myArray as $value);

这样做,foreach 循环将运行,但 {} 内的代码实际上放在了 foreach 循环之外,从而导致 $value 只存储数组的最后一个元素。

代码应如下所示:

$message = "kk,ll";
$myArray = explode(',', $message);
print_r ($myArray);
foreach ($myArray as $value) {   
    echo "$value <br>";
    $array[] = $value;
}
print_r ($array);

【讨论】:

  • @CoreyHart 这个答案部分错误,对于 foreach ($myArray as $value);将循环数组!结果 $value 得到这个数组的最后一项。
【解决方案2】:

在 Foreach 之后删除 ;,如下代码所示

foreach ($myArray as $value)

{   
echo "$value <br>";
$array[] = $value;
}

【讨论】:

  • 解释“为什么”OP 必须删除 foreach 标头之后的 ; 以及当 OP 将它放在那里时它会做什么。
  • 这只是不必要的,就像在 if(conditions){ instructions } 中一样,在语句的标题和括号对之间不需要 ;,至少对于更好的结构化代码
【解决方案3】:

您的 foreach 刚刚分配了 $value,但没有输出任何内容。这是由 ;在foreach之后,和

一样
foreach ($myArray as $value)
{}

在此之后,$value 具有 $myArray 的最后一个元素,然后

{   
    echo "$value <br>";
    $array[] = $value;
}

只输出最后一个元素。

【讨论】:

    【解决方案4】:

    In Laravel Framework Use Code into Controller:
    
        $dd = $categories->pluck( 'title' )->toArray();
        
        foreach ( $dd as $key => $value ) {<br />
            $array[$key] = '.' . $value;<br />
        } <br />
        
        $cat = implode( ',' , $array );
        <br />
        
     // Result Display : James,Mark,Helmet.....

    【讨论】:

      【解决方案5】:

      只去掉foreach($myArray as $value)后面的分号或者使用它

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-06
      • 2023-03-08
      • 2014-11-11
      相关资源
      最近更新 更多