循环获取PHP关联数组键

时间:2009-02-17 15:19:41

标签: php

我有以下代码:

while ($row = mysql_fetch_array($result, MYSQL_NUM)) 
    {
        for ($i=0; $i<count($row); $i++)
        {
            (DO THING HERE)
            $row[$i] = str_replace("\n", " ", $row[$i]);
            $row[$i] = str_replace("\r", " ", $row[$i]);
        }

    }

我基本上想做,如果关联数组键等于“email”(所以$ row ['email']),然后将“@ gmail.com”附加到它。

4 个答案:

答案 0 :(得分:5)

使用foreach循环并获取关键字和关联数组的值。

foreach($row as $key => &$value)
{
    if($key == 'email') $value .= "@gmail.com";
}

如果您想要返回关联数组,也应该使用mysql_fetch_array($result, MYSQL_ASSOC)

附加到电子邮件密钥的更有效方法是:

if(isset($row['email']))
    $row['email'] .= '@gmail.com';

而不是遍历所有列。

答案 1 :(得分:5)

查看您在那里的MYSQL_NUMThat is going to return your data using the column indexes as keys (ie 0, 1, 2, etc)

你必须

a)找出email字段所在的列索引并执行:

while ($row = mysql_fetch_array($result, MYSQL_NUM)) 
{
    // 'email' is in column number 5
    $row[5] .='@gmail.com';

    for ($i=0; $i<count($row); $i++)
    {
        $row[$i] = str_replace("\n", " ", $row[$i]);
        $row[$i] = str_replace("\r", " ", $row[$i]);
    }
}

b)或者您可以将MYSQL_NUM更改为MYSQL_ASSOC,然后执行:

while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) 
{
    $row['email'] .='@gmail.com';

    foreach($row as &$value)
    {
        $value = str_replace("\n", " ", $value);
        $value = str_replace("\r", " ", $value);
    }
}

请注意"&"之前的$value以使其成为参考。

我会做后者(我更喜欢foreachfor:)

答案 2 :(得分:1)

Paulo几乎完全正确:

while ($row = mysql_fetch_assoc($result)) {
    foreach($row as $key => &$value) {
        if($key == 'email') $value .= '@gmail.com';
        $value = str_replace("\n", " ", $value);
        $value = str_replace("\r", " ", $value);
    }
}

注意“&amp;”在foreach行。这意味着您正在修改$row数组中的值,而不仅仅是它的副本。

答案 3 :(得分:0)

我不确定这是否正是你想要的,但是:

$row['email'].='@gmail.com';

这会将@ gmail.com附加到电子邮件行。