使用foreach循环创建key =>值对

时间:2012-05-29 20:59:19

标签: php arrays command-line foreach iteration

这是我的问题: 我在命令行中有一个程序,可以访问成千上万的用户。我们的想法是,您只需输入用户名即可获得有关用户的所有信息。所以,因为我想在php中工作,所以我做了以下

$user_info = array();
exec('uwdir -v userid=nvidovic', $user_info); 

为了给你一个过度简化版本的$ user_info上的var_dump,它会是这样的:

array(2){
  [0] => "first: N"
  [1] => "last: Vidovic"
} 

我希望能够做到这一点$ user [first] => Ñ

这是我提出的(不是来自命令行的实际数据):

$full_name = array("first: N", "last: Vidovic");
var_dump($full_name);
foreach ($full_name as $part_name) {
    $exploded = explode(":", $part_name);
    $make_array = array($exploded[0] => $exploded[1]);
    echo $make_array["first"]; 
}

显然,这不起作用。但我的问题是为什么?有谁知道我怎么做我上面解释的? 我真的,真的,真的......真的卡住了 感谢任何人提前!!

编辑: 很好的答案,谢谢。最后一点,我不断收到错误消息注意:未定义的偏移量:1和注意:未定义的偏移量:0代码如下:

$user_info = array();
exec('uwdir -v userid=nvidovic', $user_info); 
foreach ($user_info as $info) {
    $exploded_info = explode(":", $info);
    $info_array[$exploded_info[0]] = $exploded_info[1];
}
echo $info_array["displayName"];

任何人都知道为什么会这样吗?我认为explode函数会将单个字符串分解为两个字符串的数组,对吗?

3 个答案:

答案 0 :(得分:4)

而不是

$make_array = array($exploded[0] => $exploded[1]);

$make_array[$exploded[0]] = $exploded[1];

确保将$make_array = array();放在此行之前,只是为了确保它是一个空数组。

答案 1 :(得分:2)

$full_name = array("first: N", "last: Vidovic");
//var_dump($full_name);
foreach ($full_name as $part_name) {
    $exploded = explode(":", $part_name);
    $make_array[$exploded[0]] =  $exploded[1];
   // echo $make_array["first"]; 
}
print_r($make_array);

http://codepad.org/JvcPdBeq

答案 2 :(得分:0)

因为行

  

$ make_array = array($ explosion [0] => $ explosion [1]);

覆盖整个数组的内容。所以在最后一步,你将只有一个元素。