Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP:如果子数组只有一个值,则用该值替换该数组_Php_Arrays - Fatal编程技术网

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);