拉出数组元素

时间:2012-10-11 03:47:51

标签: php mysql arrays

所以我打印一个数组,生成如下:

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的输出上访问该数组的每个元素?

比如说,我想抓住组合,以及组成的值。我该怎么做?

我在Python中使用数组/列表非常好,但我在PHP中使用数组的经验有点缺乏。

4 个答案:

答案 0 :(得分:1)

使用

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

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

如果您只想categoriesvalues使用

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

echo $twitgroup['composed'];     // outputs 330 

答案 1 :(得分:0)

mysql_fetch_array替换为mysql_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";
}

答案 2 :(得分:0)

mysql_fetch_array在结果中包含两个字段,一个与数字键相关联,另一个与字段名称相关联。

这就是你有

的原因
   [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.

   }

如果你想将结果限制为数字或关联数组,请在mysql_fetch_array中添加一个额外的标志(result_type):

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

说完这一切之后,我们非常不鼓励在PHP中使用mysql_ *函数,因为它们已被弃用。您应该使用mysqli或PDO代替。

答案 3 :(得分:0)

这就是你所拥有的:

  Array ( 
    [0]         => composed 
    [category]  => composed 
    [1]         => 330  
    [value]     => 330 
    [2]         => 1344384476.94 
    [timestamp] => 1344384476.94 
) Array (
    [] =>
    [] =>
    ...
) ...

PHP中的数组称为关联数组,因为它们可以具有 要么是整数,字符串或其他任何键。 你有一个包含数组的数组。

要访问各个字段,最方便的是使用a 对于每个循环。

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

在我看来,你取得的方式有问题 数据,因为一半的字段似乎是多余的。您可以使用字符串键 找出内容。所以不需要n =>名称条目。

如果无法帮助我,我猜你可以用

迭代这些值
$ix=0;
for ($i=0; $i < (count($array)/2); $i++){
   printf("%s\n", $array[$ix]);
   $ix++;
}