[英]php loop through array
我试图从数组中获取某些值,但卡住了。 这是数组的外观:
array(2) {
[0]=>
array(2) {
["attribute_code"]=>
string(12) "manufacturer"
["attribute_value"]=>
string(3) "205"
}
[1]=>
array(2) {
["attribute_code"]=>
string(10) "silhouette"
["attribute_value"]=>
array(1) {
[0]=>
string(3) "169"
}
}
}
因此,从中我想拥有attribute_values,并将其插入到新数组中,因此在此示例中,我需要205和169。但是问题是attribute_value可以是数组或字符串。 这就是我现在拥有的东西,但它只能为我提供第一个值-205。
foreach ($array as $k => $v) {
$vMine[] = $v['attribute_value'];
}
我在这里想念的是什么?
谢谢!
如果有时, attribute_value
可以是一个数组,并且可以在其中包含值,则可以使用is_array()
函数仅在循环内部(假设这是最大级别)进行检查。 例:
$vMine = array();
foreach ($array as $k => $v) {
if(is_array($v['attribute_value'])) { // check if its an array
// if yes merge their contents
$vMine = array_merge($vMine, $v['attribute_value']);
} else {
$vMine[] = $v['attribute_value']; // if just a string, then just push it
}
}
我建议您使用array_map
而不是for loop
。 您可以尝试这样的事情。
$vMine = array_map(function($v) {
return is_array($v['attribute_value']) ? current($v['attribute_value']) : $v['attribute_value'];
}, $arr);
print '<pre>';
print_r($vMine);
尝试速记版本:
foreach ($array as $k => $v) {
$vMine[] = is_array($v['attribute_value']) ? current($v['attribute_value']):$v['attribute_value'];
}
或较长的易于理解的版本,两者是相同的:
foreach ($array as $k => $v) {
if(is_array($v['attribute_value'])) {
$vMine[] = current($v['attribute_value']);
} else {
$vMine[] = $v['attribute_value'];
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.