我是PHP的新手,所以我不知道如何优化这段代码。
我从PHP执行一个Python脚本,返回的$output
变量是一个数组数组。
exec (" /Users/$USER/anaconda/bin/python /Applications/MAMP/cgi-bin/Evaluation1.py",$output)
$output
数组中的每个数组都包含一个用逗号分隔的字符串值。因此CCD_ 3是Array([0]=>1,好,0[1]=>2,妈妈,3) 等
在$output
数组中的每个数组中,我使用字符串值的爆炸来创建一个数组,并将其添加到我的新$output
数组中,称为$output2
$output2 = array();
foreach($output as $value){
$myArray = explode(',', $value);
$output2[] = $myArray;
}
有没有一种方法可以用新数组替换/覆盖$output
中数组中的字符串值,而不是将每个项添加到新的$output2
数组中?
您可以使用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
)
)
已经有了一些不错的答案。只是为了完整性而添加这个。
$ar = array(
"1,2,3",
"4,5,6"
);
foreach($ar as $k => $v) {
$ar[$k] = explode(',', $v);
}
看到不同方法的性能差异会很有趣,尽管我怀疑这会有多大。