如何在PHP中调用数组的特定数组值?
问题描述:
我以数组的形式获取输出。如何在PHP中调用数组的特定数组值?
$array =
Array
(
[12] => Array
(
[1] => Array
(
[14] => Array
(
[0] => Array
(
[name] => Avaya Implementation Services
[service_id] => 14
[ser_type_id] => 1
[service_desc] =>Avaya Implementation Servic
)
)
)
)
);
我只想打印service_desc数组值。我不想像$ array [12] [1] [14] [0] ['service_desc'];
我该怎么称呼service_desc数组的数组值?
答
至于你提到你不想称其为$array[12][1][14][0]['service_desc']
您可以使用extract
功能,将从您的阵列创建变量,
extract($array[12][1][14][0]);
echo $service_desc;
然后你就可以用你的特定键,如service_desc
如变量。
答
你可以试试这个功能:(请优化按您的要求)
$arr ="<YOUR ARRAY>";
$val = "service_desc";
echo removekey($arr, $val);
function removekey($arr, $val) {
$return = array();
foreach ($arr as $k => $v) {
if (is_array($v) && $k !== $val) {
removekey($v, $val);
continue;
}
if ($k == $val) {
echo ($arr[$k]);
die;
}
$return[$k] = $v;
}
return $return;
}
答
使用转换多维数组到单个阵列iterator_to_array
REF:http://php.net/manual/en/function.iterator-to-array.php
$service_desc= iterator_to_array(new RecursiveIteratorIterator(new RecursiveArrayIterator($your_array)), 0);
print_r($service_desc);
结果:
Array
(
[name] => Avaya Implementation Services
[service_id] => 14
[ser_type_id] => 1
[service_desc] =>Avaya Implementation Servic
)
答
您可以使用array_walk_rescursive
帧匹配关键字的一维数组:
<?php
$array[12][1][14][0]['service_desc'] = 'Avaya Implementation Servic';
$array[12][1][14][0]['service'] = 'dsfasf';
$array[12][1][114][0]['service_desc'] = 'Avaya Implementation Servicasdfdsf';
$searchKey = 'service_desc';
$desiredValues = [];
array_walk_recursive($array, function ($v, $k) use ($searchKey, &$desiredValues) {
if ($k === $searchKey) {
$desiredValues[] = $v;
}
});
print_r($desiredValues);
因此,这将产生:
Array
(
[0] => Avaya Implementation Servic
[1] => Avaya Implementation Servicasdfdsf
)
答
您可以使用array_walk_recursive
功能。
array_walk_recursive($array, function ($val, $key) {
if ($key == 'service_desc') print_r($val);
});
取而代之的是print_r
语句,你可以收集你的数据转化为另一种结构,它传达你使用use
声明,或与$userdata
附加参数(见http://www.php.net/manual/en/function.array-walk-recursive.php)。在use (&$results)
前
$results = array();
array_walk_recursive($array, function ($val, $key) use (&$results) {
if ($key == 'service_desc') {
$results []= $val;
}
});
支付额外的照顾到&
否则你的结果阵列将被视为回调内不变(即所有的变化丢弃)。
你将不得不将它称为'$ array [12] [1] [14] [0] ['service_desc'];否则你将需要重新分解你的数组,或者重新考虑你生成数组的方式; – hassan
我会仔细看看任何代码首先产生这样一个奇数组 – RiggsFolly
我认为有任何预定义的函数来捕捉特定的数组值。 @hassan – Siddhu