1

これは簡単なはずですが、うまくいかないようです。多次元配列があり、配列を反復処理して特定の値を確認することはありません。値が文字列と等しい場合は、配列の値をエコーアウトします。

これが配列と2つの値です(完全な配列にはもっとたくさんあります):

$users = array( 
    "username01" => array("fullname" => "Firstname Lastname",
                            "status" => "Online"),
    "username02" => array("fullname" => "Firstname Lastname",
                            "status" => "Offline")
);

echo「オンライン」である各ユーザーのフルネームを公表したくありません。これが私が今日使用しているものですが、機能していません:

$string = "Online";
foreach ($users as $username => $data) {
    $fullname = $data["fullname"];
    $status   = $data["status"];

    echo $status."= ";
    if ($status == $string) { 
        echo "Yes"; 
    } else { 
        echo "No"; 
    }
      echo "<br>";
}

エコーアウト$fullname$statusて正しいデータが出力された場合。しかし、何らかの理由でIFステートメントが機能していません。ユーザーがオフラインの場合、エコーは「いいえ」ですが、ユーザーがオンラインの場合、エコーはまったくありません。

編集-解決済み
以下に提案されているように、引用符と$data[...]で配列キーを更新しました。誤った出力を引き起こしているタイプミスを見つけました。すべての助けをありがとう。

4

4 に答える 4

3

これは私にとっては大丈夫です:

<?php 

    //you forgot to enclose your keys by Single Quote (')
    $users = array( 
    "username01" => array('fullname' => "Firstname Lastname",
                'status' => "Online"),
    "username02" => array('fullname' => "Firstname Lastname",
                'status' => "Offline")
);

    $string = "Online";
    foreach ($users as $username => $data) {
      //Notice this line
      //$username is the key 
      //at the first iteraiton it will be uername01
      //$data holds the array of username index in the array named $users
      $fullname = $data["fullname"];
      $status = $data['status'];
      if($status == $string) { echo "Yes"; } else { echo "No"; }
    }

?>

foreachの詳細については、phpでforeachを確認してください。

お役に立てば幸いです。ハッピーコーディング。

于 2012-11-11T21:29:15.843 に答える
2

多分それは配列定義の「フルネーム」と「ステータス」の周りの欠落した引用符と関係があります。印刷したコードは機能していますが、警告が表示されます。

そのように試してみてください:

<?php
$users = array( 
    "username01" => array("fullname" => "Firstname Lastname",
                            "status" => "Online"),
    "username02" => array("fullname" => "Firstname Lastname",
                            "status" => "Offline")
);
于 2012-11-11T21:21:51.003 に答える
1

奇妙な-それはうまくいくはずです...

これを試して:

$users = array( 
    "username01" => array(  'fullname' => "Firstname Lastname",
                            'status' => "Online"),
    "username02" => array(  'fullname' => "Firstname Lastname",
                            'status' => "Offline")
     );

foreach ( $users as $user )
{
    if( strcasecmp( 'online', $user['status'] ) == 0 )
    {
        echo $user['fullname'] .': Online';
    }
    else
    {
        echo $user['fullname'] .': Offline';
    }
}
于 2012-11-11T21:20:42.737 に答える
1

あなたの問題はあなたの配列です。これを試してみてください。

$users = array( 
    "username01" => array(  "fullname" => "Firstname Lastname",
                            "status" => "Online"),
    "username02" => array(  "fullname" => "Firstname Lastname",
                            "status" => "Offline")
     );

あなたはとを忘れ"ました。ローカルのXAMPPで正常に動作します。statusfullname

于 2012-11-11T21:21:58.660 に答える