Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/240.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从php中的动态变量创建关联数组?_Php_Arrays_Dynamic_Associative - Fatal编程技术网

如何从php中的动态变量创建关联数组?

如何从php中的动态变量创建关联数组?,php,arrays,dynamic,associative,Php,Arrays,Dynamic,Associative,我有以下代码: $people=array(); $i=0; foreach ($xml->xpath('//person') as $character) { if ($character->status!="Active"){ $people[$i]['fullname']=(string)$character->fullname; $people[$i]['status']=(string)$character->status; $i++;

我有以下代码:

$people=array();
$i=0;
foreach ($xml->xpath('//person') as $character) {
if ($character->status!="Active"){

  $people[$i]['fullname']=(string)$character->fullname;
  $people[$i]['status']=(string)$character->status;
  $i++;

    }
}
它基于$i的值创建一个带有数字键的数组。但是,我实际上并不希望这样,我希望“fullname”字符串是键,但我无法解决如何动态分配键。我尝试过这样的事情:

$people[(string)$character->fullname]=>(string)$character->status;

但这只会带来错误。我不知道如何基于变量创建键。有人能帮忙吗?

请再试一次,但使用
=
,而不是
=>

$people[ (string) $character->fullname ] = (string) $character->status;

只能在数组定义中使用
=>
。否则,只需使用bog标准分配:

$people[$character->fullname] = $character->status;

您不需要强制转换,因为您已经有了字符串。即使您没有这样做,您也可以简单地依靠动态键入在输出时根据需要转换它们。

它会引发什么错误?它看起来确实应该起作用。您甚至不需要使用
(string)
强制转换。是否必须将其转换为字符串?Doh。正如下面的答案所说,您需要将
=>
更改为
=
。谢谢大家,我现在可以使用了,谢谢你们的帮助。我看到你们是这里的新用户。欢迎您可能还想在找到时间后尽快查看常见问题。@Tomalak“为什么它们不是字符串?”因为他正在使用XML。它们是节点,但有时您需要节点值,因此可以强制转换为字符串。@Alin:在动态类型语言中,您不应该使用显式强制转换。当他开始使用数组元素时,可以推断出类型。Alin-是的,我在将它们具体转换为字符串之前尝试排序时遇到了一些奇怪的问题。@Max:啊,你没有说排序!将强制转换添加回中。@Tomalak如果保留完整的对象,您可以运行所有类型的问题。您可能会耗尽内存。排序可能无法按预期工作。我经常遇到的一个问题是在会话中保存信息,XML对象不会序列化。至于铸造用作数组索引的对象,这是冗余的,但在编码时一定量的冗余会增加可读性。
$people[$character->fullname] = $character->status;