繁体   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