PHP:将数组推入数组

时间:2016-07-21 23:59:33

标签: php multidimensional-array array-push

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

这是我的问题:我有一个名为$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"); 的数组,我想在一个函数中将数组添加到这个(多维)数组中。

array_push

我知道这个函数创建了一个好的&#34; rgb&#34; -array有3个值,我测试了屏幕输出。但是使用$color[] = $rgb;$color并不会将该数组添加到<div class="container"> <div class="row"> <div class="col-md-12"> <h3>Nothing clicked yet!</h3> <button type="button" class="btn btn-default btn-lg">Star</button> <hr> <div> <div class="btn-group"> <button type="button" class="btn btn-default">1</button> <button type="button" class="btn btn-default">2</button> <button type="button" class="btn btn-default">3</button> <button type="button" class="btn btn-default">4</button> </div> <div class="btn-group"> <button type="button" class="btn btn-default">5</button> <button type="button" class="btn btn-default">6</button> <button type="button" class="btn btn-default">7</button> </div> <div class="btn-group"> <button type="button" class="btn btn-default">8</button> </div> </div> <hr> <div> <div class="btn-group btn-group-lg"> <button type="button" class="btn btn-default">Left</button> <button type="button" class="btn btn-default">Middle</button> <button type="button" class="btn btn-default">Right</button> </div> </div> </div> </div> </div> 数组中。没有显示错误,&#34;颜色&#34; -array只是保持空白。

3 个答案:

答案 0 :(得分:1)

您需要通过引用

$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变量的建议,以便自己查看。)

答案 1 :(得分:0)

见下文。您需要允许全局变量$ color在函数中使用&#34; global&#34;关键字:

$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");

答案 2 :(得分:0)

您需要全局化$ 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部分