2

したがって、次のように生成された配列を print_r しています。

while ($twitgroup = mysql_fetch_array($resulttwitter)) {
print_r($twitgroup);
}

この出力を取得します(行に応じて、さらに複数の配列を使用)。

Array ( [0] => composed [category] => composed [1] => 330 [value] => 330 [2] => 1344384476.94 [timestamp] => 1344384476.94 ) Array ( [0] => elated [category] => elated [1] => 2034 [value] => 2034 [2] => 1344384476.94 [timestamp] => 1344384476.94 ) Array ( [0] => unsure [category] => unsure [1] => 2868 [value] => 2868 [2] => 1344384476.94 [timestamp] => 1344384476.94 ) Array ( [0] => clearheaded [category] => clearheaded [1] => 1008 [value] => 1008 [2] => 1344384476.94 [timestamp] => 1344384476.94 ) Array ( [0] => tired [category] => tired [1] => 2022 [value] => 2022 [2] => 1344384476.94 [timestamp] => 1344384476.94 ) 

ここで個々の値を引き出せるようにしたいのですが、困っています。これらの配列で while ループを使用しようとしていますが、おそらくそれは間違っていると思います。おそらく foreach ループを使用し、その foreach の出力で配列の各要素にアクセスする必要がありますか?

たとえば、composed と、composed の値を取得したいとします。どうすればいいですか?

私は Python での配列/リストはかなり得意ですが、PHP での配列の経験はやや不足しています。

4

4 に答える 4

1

使用する

while ($row = mysql_fetch_assoc($resulttwitter)) {
  $twitgroup[$row['category']] = $row;
}

echo $twitgroup['composed']['value'];     // outputs 330 
echo $twitgroup['composed']['timestamp']; // outputs 1344384476.94

あなただけが欲しいならcategoriesそしてそれらのvalues使用

while ($row = mysql_fetch_assoc($resulttwitter)) {
  $twitgroup[$row['category']] = $row['value'];
}

echo $twitgroup['composed'];     // outputs 330 
于 2012-10-11T04:16:37.040 に答える
0

と置き換えmysql_fetch_arraymysql_fetch_assoc、重複を排除します。次にこれ:

while ($twitgroup = mysql_fetch_assoc($resulttwitter)) 
{
    foreach ($twitgroup as $key => $value)
    {
        echo "$key => $value\n";
    }
}

要素を名前で取得することもできます。

while ($twitgroup = mysql_fetch_assoc($resulttwitter)) 
{
    echo "category => " . $twitgroup["category"] . "\n";
    echo "value => " . $twitgroup["value"] . "\n";
    echo "timestamp => " . $twitgroup["timestamp"] . "\n";
}
于 2012-10-11T03:55:12.187 に答える
0

mysql_fetch_array は、結果に各フィールドを 2 回含めます。1 つは数値キーに関連付けられ、もう 1 つはフィールド名に関連付けられます。

それがあなたが持っている理由です

   [0] => composed 
   [category] => composed
   [1] => 330 
   [value] => 330

次のいずれかのフィールドにアクセスできます。

  $twitgroup[0]

または好き:

  $twitgroup['category']

したがって、次のように各行にアクセスできます。

  while ($twitgroup = mysql_fetch_array($resulttwitter)) {
          print $twitgroup['category']; // or print $twitgroup['0'];
          print $twitgroup['value']; // // or print $twitgroup['1'];

          // or by the corresponding numeric indices.

   }

結果を数値配列または連想配列に制限したい場合は、追加のフラグ (result_type) を mysql_fetch_array に追加します。

   mysql_fetch_array ($resulttwitter, MYSQL_ASSOC) // or mysql_fetch_array ($resulttwitter, MYSQL_NUM)

以上のことをすべて言いましたが、PHP で mysql_* 関数を使用することは推奨されていないため、強くお勧めしません。代わりに mysqli または PDO を使用する必要があります。

于 2012-10-11T04:12:05.850 に答える
0

これはあなたが持っているものです:

  配列 (
    [0] => 構成済み
    [カテゴリ] => 構成済み
    [1] => 330  
    [値] => 330
    [2] => 1344384476.94
    [タイムスタンプ] => 1344384476.94
) 配列 (
    [] =>
    [] =>
    ...
) ...

PHP の配列は、整数、文字列、またはその他のキーを持つことができるため、連想配列と呼ばれます。配列を含む配列があります。

個々のフィールドにアクセスするには、for each ループを使用するのが最も便利です。

$record=0;
foreach ($array as $k => $subArray) {
    $record++;
    foreach($subArray as $field => $value) {
        printf("%d: %s = %s\n", $record, $field, $value);
    }
}

フィールドの半分が冗長に見えるため、データの取得方法に問題があるように思えます。文字列キーを使用して内容を把握できます。したがって、 n => name エントリは必要ありません。

それでも仕方がない場合は、値を反復処理できると思います

$ix=0;
for ($i=0; $i < (count($array)/2); $i++){
   printf("%s\n", $array[$ix]);
   $ix++;
}
于 2012-10-11T04:13:19.397 に答える