在php多维中形成单个结果以匹配?

时间:2015-06-23 18:39:27

标签: php arrays multidimensional-array

我正在抓取一些XML数据并用PHP解析它。

大多数结果都来自多维数组,但偶尔我会在一个数组中得到一个结果,它会破坏我的脚本。

我正在尝试格式化单个结果以匹配multidiminsonal数组中的结果格式,但我没有运气。

这是我得到的:

    Array
    (
                [name] => Steve Jobs
                [id] => 3
    )

Array
    (
        [0] => Array
            (
                [name] => Steve Jobs
                [id] => 6
            )

        [1] => Array
            (
                [name] => Bill Gates
                [id] => 8
            )

    )

我正在尝试格式化单个结果以匹配多维格式然后展平...

Array
    (
        [0] => Array
            (
                [name] => Steve Jobs
                [id] => 3
            )

        [1] => Array
            (
                [name] => Steve Jobs
                [id] => 6
            )

        [2] => Array
            (
                [name] => Bill Gates
                [id] => 8
            )

    )

我试过这个:

$array_check = @array_keys($result[0]['name']);

if ($array_check[0] == "0") {
            $result;

        } elseif ($array_check[0] == "name") {
            $ReWrite =  array ([0] =>
                        array (['name']=>
                        array ($result[0]['name'])
                        ));

            $result = $ReWrite;

        }

我认为会这样做,但它已经关闭......

2 个答案:

答案 0 :(得分:0)

试试这个:

    $array_check = @array_keys($result[0]['name']);

    if (!isset($array_check[0])) {
        $result[] = $array_check;
    } else {
        $result = $array_check;
    }

    var_dump($result);

答案 1 :(得分:0)

如果您的第一个数组已分配给变量$ singleArray而您的目标结果存储在$ results中,请尝试此array_push($results, $singleArray);

reset()一起使用它返回数组的第一个元素:

if(!is_array(reset($result))){
    array_push($results, $result);
}

这将测试数组是否包含数组作为元素,如果它不将整个数组推送到聚合数组。

编辑:试试这个循环:

for($i = 0; $i <= count($multi); $i++){
    $arr = $multi[$i];
    if(!is_array($arr)){
        $multi[$i] = array($arr);
    }
} var_dump($multi);