PHP:如果子数组只有一个值,则用该值替换该数组
我的问题相当直截了当,但我很不确定如何有效地做到这一点 假设我们有这样一个数组:PHP:如果子数组只有一个值,则用该值替换该数组,php,arrays,Php,Arrays,我的问题相当直截了当,但我很不确定如何有效地做到这一点 假设我们有这样一个数组: array ( [0] => array( [0] => "a" ) [1] => array( [0] => "b" [1] => "c" ) ["a"] => array( ["b"] => "d" ) ) 对我来说,钥匙是否被保
array (
[0] => array(
[0] => "a"
)
[1] => array(
[0] => "b"
[1] => "c"
)
["a"] => array(
["b"] => "d"
)
)
对我来说,钥匙是否被保存并不重要,我最终想要的是这个(有或没有钥匙保存,都不重要):
预期输出:
array (
[0] => "a"
[1] => array(
[0] => "b"
[1] => "c"
)
["a"] => "d"
)
Array
(
[0] => a
[1] => Array
(
[0] => b
[1] => c
)
[a] => d
)
我希望你能帮忙
~Troels这里我们插入数组的第一个值。当
$value
的计数等于1时
这里我们插入数组的第一个值。当
$value
的计数等于1时
$arr=array(
0=>数组(
0=>“a”
),
1=>数组(
0=>“b”,
1=>“c”
),
“a”=>数组(
“b”=>“d”
)
);
回声“;印刷费($arr);
foreach($arr作为$key=>$val){
if(is_数组($val)&&count($val)==1){
$arr[$key]=array_shift($val);//获取数组中只有一个元素的第一个元素
}
}
回声“;印刷费($arr);
$arr=array(
0=>数组(
0=>“a”
),
1=>数组(
0=>“b”,
1=>“c”
),
“a”=>数组(
“b”=>“d”
)
);
回声“;印刷费($arr);
foreach($arr作为$key=>$val){
if(is_数组($val)&&count($val)==1){
$arr[$key]=array_shift($val);//获取数组中只有一个元素的第一个元素
}
}
回声“;印刷费($arr);
为什么要用array_shift()而不是简单的$arr[$key]=$val[$key]使事情复杂化代码>?@Jack问得好,请检查数组和子数组键,希望能消除您的疑问。我们不知道子数组的键,这就是为什么我使用array_shift()
为什么用array_shift()而不是简单的$arr[$key]=$val[$key]使事情复杂化代码>?@Jack问得好,请检查数组和子数组键,希望能消除您的疑问。我们不知道sub-array的键,这就是为什么我使用array\u shift()
这里的php标记问题将是@Sahil Gulati的答案:D您太活跃了(y)会将您的注释标记为答案,因为您考虑到了值可能不是数组的事实,我在示例数组中没有说明,但毫无疑问会发生;感谢您回答这里的php标记问题@Sahil Gulati的答案:D您太活跃了(y)会将您的评论标记为答案,因为您考虑到了值可能不是数组这一事实,我在示例数组中没有考虑到这一点,但毫无疑问可能会发生;谢谢你的回答
Array
(
[0] => a
[1] => Array
(
[0] => b
[1] => c
)
[a] => d
)
$arr = array (
0 => array(
0 => "a"
),
1 => array(
0 => "b",
1 => "c"
),
"a" => array(
"b" => "d"
)
);
echo "<pre>"; print_r($arr);
foreach($arr as $key=>$val){
if(is_array($val) && count($val) == 1){
$arr[$key] = array_shift($val); //get first element of the array which have only one element
}
}
echo "<pre>"; print_r($arr);
<?php
$temp = array (
0 => array(
0 => "a"
),
1 => array(
0 => "b",
1 => "c"
),
"a" => array(
"b" => "d"
)
);
echo "<pre>"; print_r($temp);
$new_arr = array();
foreach ($temp as $key => $value) {
if(count($value)>1)
$new_arr[$key] = $value;
else
{
$new_arr[$key] = array_shift($value);
}
}
echo '<pre>'; print_r($new_arr);