我有一个函数可以解析嵌套数组中的'条目:
$data = Array(
[date] => 'date'
[entry] => Array(
[0] => Array(
[Title] => 'title0'
[Price] => 'price0'
)
[1] => Array(
[Title] => 'title1'
[Price] => 'price1'
)
)
)
如果有多个条目,使用foreach($data['entry'] as $entry){
循环播放效果很好。但是,我只服务了一个条目:
$data = Array(
[date] => 'date'
[entry] => Array(
[Title] => 'title'
[Price] => 'price'
)
)
foreach循环失败。
是否有一种优雅的方式来编写一个foreach,它将获取每个条目[0],条目[1]子数组(正常)或者如果只有一个条目并且获取整个“条目”数组则返回一个级别代替?
附录:我正在对条目做的事情非常复杂......我想我可以把它分成不同的函数,做一个if(is_array)检查然后调用函数一次,或者每个..但那似乎不够优雅......
答案 0 :(得分:2)
最优雅的方法是基于键创建一个数组,即使只有一个。
像这样:
$data = Array(
[date] => 'date'
[entry] => Array(
[0] => Array(
[Title] => 'title0'
[Price] => 'price0'
)
)
)
答案 1 :(得分:2)
从技术上讲,您不需要$ temp变量步骤。
$data['entry'] = isset($data['entry'][0]) ? $data['entry'] : array($data['entry']);
答案 2 :(得分:0)
这是因为你定义了一个像这个结构的多维数组:
entry = array(array())
在第二种情况下,您只声明了entry = array()
if(is_array(entry[0]))
...
答案 3 :(得分:0)
if(!isset($data['entry']['0'])){
$temp = $data['entry'];
unset($data['entry']);
$data['entry']['0'] = $temp;
}
foreach($data['entry'] as $entry) ...
不太“优雅”,但它有效......
答案 4 :(得分:0)
试试这个对我有用
foreach ($data as $key => $value) {
if (!is_numeric($key)) {
//not multidimensional
$data1 = $data;
} else {
$data1 = $value;
}
//do your stuff
echo $data1;
}
最终你可以做一个递归函数