我一直试图对此进行编码一段时间,但我对多维数组感到困惑。
我已将其简化为:
考虑一下我已经有了一个数组:
$myarray = ("1233","4345","3452");
我想将一个数组推入这个数组(以创建多维数组)的某个值。
例如, 有了这两个变量:
$eventID = 4345
$photoID = 12
我想最终得到:
("1233", "4345 => 12", "3452")
答案 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 )