【问题标题】:Best way to convert an indexed array to a two-dimensional array in php在php中将索引数组转换为二维数组的最佳方法
【发布时间】:2020-01-29 07:18:10
【问题描述】:

我试图弄清楚如何从我的“当前”数组构建“所需”数组。

我当前的数组是一个索引数组,但每个值实际上是由| 分隔的两个值。我目前explode() 每个数组值产生两个单独的值。我想将当前数组转换为一个二维数组,其中第一个数组被索引,嵌套数组是一个关联数组。

我尝试了几个想法,但都没有奏效。非常感谢以编程方式转换它的任何帮助。

我的“当前”数组

$appInfo = array("idNum1|dir/path1","idNum2|dir/path2","idNum3|dir/path3");

我的“所需”数组

$apps = array(
  array("appID" => "$someVarAppID","appDir" => "$someVarAppPath"),
  array("appID" => "$someVarAppID","appDir" => "$someVarAppPath"),
  array("appID" => "$someVarAppID","appDir" => "$someVarAppPath"),
  array("appID" => "$someVarAppID","appDir" => "$someVarAppPath")
);

【问题讨论】:

    标签: php arrays multidimensional-array associative-array


    【解决方案1】:

    这样的事情会起作用:

    $apps = array();
    foreach ($appInfo as $app) {
        list($id, $path) = explode('|', $app);
        $apps[] = array('appId' => $id, 'appDir' => $path);
    }
    

    输出:

    Array
    (
        [0] => Array
            (
                [appId] => idNum1
                [appDir] => dir/path1
            )
        [1] => Array
            (
                [appId] => idNum2
                [appDir] => dir/path2
            )
        [2] => Array
            (
                [appId] => idNum3
                [appDir] => dir/path3
            )
    )
    

    Demo on 3v4l.org

    【讨论】:

    • 我更新了你的演示,让它看起来更像 OP 想要的那样:3v4l.org/eSKs3
    • @catcon 我在方向盘上睡着了。您应该将其发布为答案。
    • @Nick 感谢您的帮助!你能解释一下为什么你使用$apps[]而不是$apps()吗?此外,如果我尝试var_dump($apps[]);,我会收到以下错误,“致命错误:无法使用 [] 读取”。任何想法为什么?再次感谢!
    • @Mr.B $arr[] = value 符号是array_push($arr, value) 的简写;这是一种将值添加到数组末尾的简单方法。既然是这个意思,你不能在表达式中使用它,所以你只需要var_dump($apps);
    • @Nick 再次感谢!!现在有道理,这解决了我的问题。度过一个愉快的夜晚!
    猜你喜欢
    • 2011-06-14
    • 1970-01-01
    • 1970-01-01
    • 2019-11-01
    • 2022-01-05
    • 1970-01-01
    • 2019-05-22
    • 2019-06-15
    相关资源
    最近更新 更多