PHP如何将数组推送到另一个数组中的值(多维数组)

时间:2011-10-25 06:31:40

标签: php arrays

我一直试图对此进行编码一段时间,但我对多维数组感到困惑。

我已将其简化为:

考虑一下我已经有了一个数组:

$myarray = ("1233","4345","3452");

我想将一个数组推入这个数组(以创建多维数组)的某个值。

例如, 有了这两个变量:

$eventID = 4345
$photoID = 12

我想最终得到:

("1233", "4345 => 12", "3452")

5 个答案:

答案 0 :(得分:4)

首先,您的数组需要是一个“关联数组”。您可以在一个语句中创建数组,如下所示:

$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手册中的section on Arrays。它是PHP中经常使用的数据结构,我建议您仔细阅读本节。

答案 1 :(得分:1)

在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”做什么< / p>

有些想法在这里:

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

答案 2 :(得分:0)

看起来您想要从现有数组创建关联数组。你可以试试这个:

$assoc_array = array_combine($myarray, array_fill(0, count($myarray), null));
$assoc_array['4345'] = 12;
对于所有其他eventID,

$assoc_array将填充null个值。

答案 3 :(得分:0)

此代码将生成您想要的内容:

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

答案 4 :(得分:0)

您想创建一个键值对吗?在那种情况下,为什么不尝试

$myarray["4345"]=12;

最终会像

一样结束
Array ( [0] => 1233 [1] => 4345 [2] => 3452 [4345] => 12 )