Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 嵌套foreach循环_Php_Arrays_Foreach - Fatal编程技术网

Php 嵌套foreach循环

Php 嵌套foreach循环,php,arrays,foreach,Php,Arrays,Foreach,我有一个像这样的数组 $foreacharray = array( "model" => array ("samsung", "sony", "philips", "acer", "hp"), "qty" => array("3", "7", "5", "1", "8"), ); foreach ($foreacharray["model"] as $model) { foreach($foreacharray["qty"] as $qty) {

我有一个像这样的数组

$foreacharray = array(
    "model" => array ("samsung", "sony", "philips", "acer", "hp"),
    "qty" => array("3", "7", "5", "1", "8"),
);
foreach ($foreacharray["model"] as $model)
{
    foreach($foreacharray["qty"] as $qty)
    {
        echo $model;
        echo '<br>';
    }
}
我想做的是为每一个型号画一个标志,根据它的数量,这样三星=3,索尼=7等等就会画出3个索尼标志和7个三星标志

我想出了这样的主意

$foreacharray = array(
    "model" => array ("samsung", "sony", "philips", "acer", "hp"),
    "qty" => array("3", "7", "5", "1", "8"),
);
foreach ($foreacharray["model"] as $model)
{
    foreach($foreacharray["qty"] as $qty)
    {
        echo $model;
        echo '<br>';
    }
}
foreach($foreacharray[“model”]作为$model)
{
foreach($foreacharray[“数量”]作为$qty)
{
echo$模型;
回声“
”; } }
但当然,所有这些都是为了每个数组条目,呼出名称,所以我最后打印了5个Samsung,5个Sony,等等

如何使用数量数组的值而不是条目数来实现这一点?

假设模型是唯一的,您可以使用模型作为键,数量作为值:

$combined = array_combine($foreacharray['model'], $foreacharray['qty']);

foreach($combined as $model => $qty) {
    # …
}

我想你是想这么做:

for( $i = 0, $e = count( $foreacharray["model"] ); $i < $e; ++ $i ) {
    echo $foreacharray["model"][$i] . ' = ' . $foreacharray["qty"][$i] . '<br />';
}
for($i=0,$e=count($foreacharray[“model”]);$i<$e;++$i){
echo$foreacharray[“model”][$i].='.$foreacharray[“qty”][$i].
; }
基本上,单个循环在同一索引处引用两个数组

如果愿意,也可以使用foreach,如下所示:

foreach( $foreacharray["model"] as $key => $model ) {
    echo $model . ' = ' . $foreacharray["qty"][$key] . '<br />';
}
foreach($foreacharray[“model”]作为$key=>$model){
echo$model.'='.$foreacharray[“数量”][$key]。
; }
为什么不使用函数
数组_combine
简化此操作

榜样

$newArray = array_combine($foreacharray[0], $foreacharray[1]);
var_dump($newArray);
// will output
array (
     "samsung" => 3,
     "sony" => 7,
     "philips" => 5,
     "acer" => 1, 
     "hp" => 8,
)
然后你可以很容易地得到所有的值或者像这样显示它们

foreach($newArray as $key => $val) {
    echo $key . ' has a quantity of ' . $val . '.';
}

希望这能使它更容易。

使用数组代替数组索引进行迭代,例如:

for (i=0; i<count($foreacharray["model"]); i++)
{
    $model = $foreacharray["model"][i];
    $qty = $foreacharray["qty"][i];
    echo "$model: $qty";
}
(i=0;i)的


但最好的方法是在源代码处更改此设置。

如果您首先控制数组生成,那么最好只生成一个以模型为键、以数量为值的数组,而不是生成两个单独的数组。

您的
$foreacharray[“qty”]
有5个元素,因此当您通过
foreach
循环此元素时,它将打印所有
$foreacharray[“model”]
元素5次。您的代码如何工作,如何编写。

您是否控制数组生成?如果是,只需生成一个数组,模型作为键,数量作为值。是的,回答这个问题很容易,但我支持@MarkParnell@Mark你应该将其作为答案发布。已经有“答案”这直接回答了这个问题。然而,有时候最好的答案是让某人走上完全不同的道路。问:用电锯切胡萝卜最好的方法是什么?a.放下电锯,用刀。我喜欢你的类比@csj。我会这么做。@csj:a.买不太硬的胡萝卜。这根本就没有发生过哦,让我这样做。谢谢。谢谢!我从来都不知道array_联合收割机,它会派上用场的。