我有一个看起来像这样的数组
$foreacharray = array(
"model" => array ("samsung", "sony", "philips", "acer", "hp"),
"qty" => array("3", "7", "5", "1", "8"),
);
我正在尝试做的是foreach模型,绘制其数量的标识,以便三星= 3,索尼= 7等等将绘制3个索尼徽标和7个三星徽标。
我想出了类似的东西
foreach ($foreacharray["model"] as $model)
{
foreach($foreacharray["qty"] as $qty)
{
echo $model;
echo '<br>';
}
}
但当然所有这一切都是针对每个阵列条目,回应出这个名字,所以我最终得到了5个samsungs正在打印5个索尼被打印等。
如何使用qty数组的值而不是条目数?
答案 0 :(得分:2)
为什么不使用函数array_combine
?
http://www.php.net/manual/en/function.array-combine.php
实施例
$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 . '.';
}
希望这会让事情变得更容易。
答案 1 :(得分:2)
如果您首先控制数组生成,那么最好只生成一个以模型为键,qty为值的单个数组,而不是生成2个单独的数组。
答案 2 :(得分:1)
假设模型是唯一的,您可以使用array_combine
将模型用作键和数量作为值:
$combined = array_combine($foreacharray['model'], $foreacharray['qty']);
foreach($combined as $model => $qty) {
# …
}
答案 3 :(得分:1)
我认为你正在尝试这样做:
for( $i = 0, $e = count( $foreacharray["model"] ); $i < $e; ++ $i ) {
echo $foreacharray["model"][$i] . ' = ' . $foreacharray["qty"][$i] . '<br />';
}
基本上,单个循环引用同一索引处的两个数组。
如果您愿意,也可以使用foreach,如下所示:
foreach( $foreacharray["model"] as $key => $model ) {
echo $model . ' = ' . $foreacharray["qty"][$key] . '<br />';
}
答案 4 :(得分:1)
// #1 using one for keys, another for values:
foreach(array_combine($foreacharray['model'],$foreacharray['qty']) as $model => $nr){
var_dump($model,$nr);
}
// #2 map them with null:
foreach(array_map(null,$foreacharray['model'],$foreacharray['qty']) as $data){
var_dump($data);
}
// #3 iterators!
$iterator = new MultipleIterator();
$iterator->attachIterator(new ArrayIterator($foreacharray['model']));
$iterator->attachIterator(new ArrayIterator($foreacharray['qty']));
foreach($iterator as $data){
var_dump($data);
}
但最好的确在改变这一点。
答案 5 :(得分:0)
使用数组迭代数组索引,例如:
for (i=0; i<count($foreacharray["model"]); i++)
{
$model = $foreacharray["model"][i];
$qty = $foreacharray["qty"][i];
echo "$model: $qty";
}
答案 6 :(得分:0)
您的$foreacharray["qty"]
有5个元素,因此当您按foreach
循环时,它会打印所有$foreacharray["model"]
个元素5次。您的代码如何编写,如何编写。