PHP: 将数组推入数组
PHP: pushing array into array
我在谷歌上搜索并使用了该网站的各种方法,但不知何故我的问题没有得到解决。
这是我的问题:我有一个名为 $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"-array,有 3 个值,我用屏幕输出进行了测试。但是使用 array_push
或 $color[] = $rgb;
不会将该数组添加到 $color
数组。没有显示错误,"color"-array 只是保持为空。
见下文。您需要使用 "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");
您需要通过引用将 $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
可能会导致意想不到的后果。更好的设计是让您的代码模块化(只需搜索有关使用 global
vars 的建议以供您自己查看)。
您需要全球化您的 $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 部分
我在谷歌上搜索并使用了该网站的各种方法,但不知何故我的问题没有得到解决。
这是我的问题:我有一个名为 $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"-array,有 3 个值,我用屏幕输出进行了测试。但是使用 array_push
或 $color[] = $rgb;
不会将该数组添加到 $color
数组。没有显示错误,"color"-array 只是保持为空。
见下文。您需要使用 "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");
您需要通过引用将 $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
可能会导致意想不到的后果。更好的设计是让您的代码模块化(只需搜索有关使用 global
vars 的建议以供您自己查看)。
您需要全球化您的 $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 部分