![](/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.