![](/img/trans.png)
[英]How to take value from multidimensional array and push another multidimensional array in PHP
[英]PHP how to Push an array to a value in another array (multidimensional array)
我已经尝试编码一段时间了,但是我对多维数组感到困惑。
我已经简化为:
考虑我已经有一个数组:
$myarray = ("1233","4345","3452");
我想以某个值将一个数组推入此数组(以创建多维数组)。
例如,使用以下两个变量:
$eventID = 4345
$photoID = 12
我想结束于:
("1233", "4345 => 12", "3452")
首先,您的数组必须是“关联数组”。 您可以在一个语句中创建数组,如下所示:
$myarray = array(
1233 => "",
4345 => 12,
3452 => ""
);
或一次像这样一次:
$myarray = array();
$myarray[1233] = "";
$myarray[4345] = 12;
$myarray[3452] = "";
这仍然是一维数组。 您可以更进一步,创建一个多维数组,如下所示:
$myarray = array();
$myarray[1233] = "";
$myarray[4345] = array("PhotoID" => 12, "Location" => "Somewhere");
$myarray[3452] = array();
$myarray[3452]["PhotoID"] = 13;
$myarray[3452]["Location"] = "Somewhere else";
在PHP中,数组的工作方式如下:
$a = array("1233", "4345", "3452");
在上面的示例中,值“ 1233”,“ 4345”和“ 3452”各自具有索引号。 因此,如果您运行该代码:
$a = array("1233", "4345", "3452");
echo "<pre>";
print_r($a);
echo "</pre>";
您将得到该结果:
Array
(
[0] => 1233
[1] => 4345
[2] => 3452
)
在这种情况下,不能在“ 4345”上分配数组,而在“ [1]”上分配数组。 因此,请记住,如果您还有另一个像这样的数组:
$b = array("321", "654", "987");
并且您想要将其分配到位置“ [1]”,则必须执行以下操作:
$a = array("1233", "4345", "3452");
$b = array("321", "654", "987");
$a[1] = $b;
照顾自己
上面的代码将用数组$ b的内容替换您的值“ 4345”。 现在,让我们尝试打印出数组:
$a = array("1233", "4345", "3452");
$b = array("321", "654", "987");
$a[1] = $b;
echo "<pre>";
print_r($a);
echo "</pre>";
结果将是现在:
Array
(
[0] => 1233
[1] => Array
(
[0] => 321
[1] => 654
[2] => 987
)
[2] => 3452
)
最后,如果您想保留数组$ a中的两个值“ 4345”并将一个数组分配给数组$ a中相同的位置,则必须考虑对值“ 4345”进行处理
一些想法在这里:
$a = array("1233", "4345", "3452");
$b = array("321", "654", "987");
$b[] = $a[1];
$a[1] = $b;
echo "<pre>";
print_r($a);
echo "</pre>";
上面的代码具有以下结果:
Array
(
[0] => 1233
[1] => Array
(
[0] => 321
[1] => 654
[2] => 987
[3] => 4345
)
[2] => 3452
)
或者您可以尝试:
$a = array("1233", "4345", "3452");
$b = array("321", "654", "987");
$c = array();
$c[] = $a[1];
$c[] = $b;
$a[1] = $c;
echo "<pre>";
print_r($a);
echo "</pre>";
上面的代码将产生以下结果
Array
(
[0] => 1233
[1] => Array
(
[0] => 4345
[1] => Array
(
[0] => 321
[1] => 654
[2] => 987
)
)
[2] => 3452
)
看起来您想从现有数组创建关联数组。 您可以尝试以下方法:
$assoc_array = array_combine($myarray, array_fill(0, count($myarray), null));
$assoc_array['4345'] = 12;
$assoc_array
将使用所有其他eventID的null
值填充。
这段代码将产生您想要的:
$myarray = array("1233","4345","3452");
print_r($myarray);
$eventID = 4345;
$photoID = 12;
if( in_array( $eventID, $myarray) )
{
array_diff( $myarray, array($eventID) );
$myarray[ $eventID] = $photoID;
}
print_r($myarray);
您要创建一个键值对吗? 在这种情况下,您为什么不尝试
$myarray["4345"]=12;
最终会像
Array ( [0] => 1233 [1] => 4345 [2] => 3452 [4345] => 12 )
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.