0

这是我的问题:我在命令行中有一个程序可以访问数以万计的用户。这个想法是,您希望能够通过简单地输入用户名来获取有关用户的所有信息。所以,因为我想在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] => N

这就是我想出的(不是来自命令行的真实数据):

$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"]; 
}

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

编辑:很好的答案,谢谢。最后一件事,我不断收到错误消息 Notice: Undefined offset: 1 和 Notice: Undefined offset: 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函数会将单个字符串分解为两个字符串的数组,对吗?

4

3 回答 3

4

代替

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

尝试

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

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

于 2012-05-29T21:03:16.513 回答
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

于 2012-05-29T21:05:38.683 回答
0

因为线

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

覆盖整个数组的内容。因此,在最后一步中,您将只有一个元素。

于 2012-05-29T21:16:44.983 回答