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

明らかに、これは機能しません。しかし、私の質問はなぜですか?私が上で説明したことをどのように行うことができるか誰かが知っていますか?私は本当に、本当に、本当に...本当に事前に誰かに感謝します!!

編集:素晴らしい答え、ありがとう。最後にもう1つ、エラーメッセージが表示され続けます。注意:未定義のオフセット: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関数は、1つの文字列を2つの文字列の配列に分割すると思いましたよね?

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]);

配列全体の内容を上書きします。したがって、最後のステップでは、要素は1つだけになります。

于 2012-05-29T21:16:44.983 に答える