PHP:用数组替换数组中字符串值的更好方法?

时间:2014-09-16 19:57:27

标签: php

我是PHP的新手,所以我不确定如何优化此代码。

我从PHP执行Python脚本,返回的$output变量是一个数组数组。

exec (" /Users/$USER/anaconda/bin/python /Applications/MAMP/cgi-bin/Evaluation1.py",$output)

$output数组中的每个数组都包含一个以逗号分隔的字符串值。所以$output是数组([0] => 1,好,0 [1] => 2,妈妈,3)等。

$output数组中的每个数组中,我对字符串值使用explode来创建数组,并将其添加到名为$output

的新$output2数组中
$output2 = array();
foreach($output as $value){
$myArray = explode(',', $value);
$output2[] = $myArray;
}

是否可以使用新数组替换/覆盖$output内数组中的字符串值,而不是将每个项目添加到新的$output2数组中?

2 个答案:

答案 0 :(得分:2)

您可以使用array_walk来完成输出循环。传入一个回调函数,该函数通过引用为每个值调用,因此对传入值的任何更改都会保留在数组中。

测试数据:

$output = array(
    '1,A,2',
    '2,B,3',
    '3,C,4'
);

PHP> = 5.3.0

array_walk($output, function(&$val){ $val = explode(',', $val); } );

较旧的PHP

function mySplit(&$val){
    $val = explode(',', $val);
}
array_walk($output, 'mySplit');

两个输出:

Array
(
    [0] => Array
        (
            [0] => 1
            [1] => A
            [2] => 2
        )

    [1] => Array
        (
            [0] => 2
            [1] => B
            [2] => 3
        )

    [2] => Array
        (
            [0] => 3
            [1] => C
            [2] => 4
        )

)

答案 1 :(得分:1)

已经有了一些很好的答案。只需添加此内容即可完成。

$ar = array(
    "1,2,3",
    "4,5,6"
);

foreach($ar as $k => $v) {
    $ar[$k] = explode(',', $v);
}

看到不同方法的性能差异会很有趣,尽管我怀疑它会有多大。