这是我的问题: 我在命令行中有一个程序,可以访问成千上万的用户。我们的想法是,您只需输入用户名即可获得有关用户的所有信息。所以,因为我想在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函数会将单个字符串分解为两个字符串的数组,对吗?
答案 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);
答案 2 :(得分:0)
因为行
$ make_array = array($ explosion [0] => $ explosion [1]);
覆盖整个数组的内容。所以在最后一步,你将只有一个元素。