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_联合收割机,它会派上用场的。