PHP:将数组推入数组



我在这个网站上搜索并使用了各种方法,但不知怎么的,我的问题没有得到解决。

我的问题是:我有一个名为$color的数组,我想从一个函数中将数组添加到这个(多维)数组中。

$color = array();
function hex2RGB($hex){
    $hex = ltrim($hex,'#');
    $a = hexdec(substr($hex,0,2));
    $b = hexdec(substr($hex,2,2));
    $c = hexdec(substr($hex,4,2));
    $rgb = array($a, $b, $c);
    array_push($color,$rgb);
}
hex2RGB("#97B92B");
hex2RGB("#D1422C");
hex2RGB("#66CAEA");

我知道这个函数创建了一个很好的"rgb"数组,有3个值,我用屏幕输出进行了测试。但是使用array_push$color[] = $rgb;不会将该数组添加到$color数组中。没有显示任何错误,"color"-数组只是保持为空。

您需要通过引用将$color数组传递给函数

function hex2RGB($hex, &$color){ // '&' means changes to $color will persist
   ...
}
$color = [];
hex2RGB('#...',$color);//after this line, $color will contain the data you want

与在函数中使用global相比,我更喜欢这种方法,因为使用这种方法,可以精确地控制修改哪个数组(在调用函数时传递它)。如果您在调用函数时忘记了它会更改作用域中的其他变量,那么使用global可能会导致意外的后果。更好的设计是保持代码模块化(只需搜索关于使用globalvars的建议即可查看)。

您需要全局化$color数组才能在函数中使用它。

<?php
$color = array();
function hex2RGB($hex){
global $color; // magic happens here
$hex = ltrim($hex,'#');
$a = hexdec(substr($hex,0,2));
$b = hexdec(substr($hex,2,2));
$c = hexdec(substr($hex,4,2));
$rgb = array($a, $b, $c);
array_push($color,$rgb);
}

解决您的问题。

有关更多信息,请阅读php教程的Scope部分

请参阅下文。您需要通过使用"global"关键字允许全局变量$color在函数中使用:

$color = array();
function hex2RGB($hex){
global $color; //<----------------this line here is needed to use $color
$hex = ltrim($hex,'#');
$a = hexdec(substr($hex,0,2));
$b = hexdec(substr($hex,2,2));
$c = hexdec(substr($hex,4,2));
$rgb = array($a, $b, $c);
array_push($color,$rgb);
}
hex2RGB("#97B92B");
hex2RGB("#D1422C");
hex2RGB("#66CAEA");

相关内容

  • 没有找到相关文章

最新更新