簡體   English   中英

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手冊中有關數組部分 它是PHP中非常常用的數據結構,我建議您仔細閱讀本節。

在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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM