[英]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.