循环获取PHP关联数组键

rof*_*fle 0 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]);
        }

    }
Run Code Online (Sandbox Code Playgroud)

我基本上想做,如果关联数组键等于"email"(所以$ row ['email'])然后追加"@ gmail.com".

Ada*_*eck 5

使用foreach循环并获取assoc数组的键和值.

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

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

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

if(isset($row['email']))
    $row['email'] .= '@gmail.com';
Run Code Online (Sandbox Code Playgroud)

而不是遍历所有列.


Cre*_*esh 5

看到MYSQL_NUM你在那里?这将使用列索引作为键(即0,1,2等)返回您的数据.

你必须要么

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]);
    }
}
Run Code Online (Sandbox Code Playgroud)

b)或您可以更改MYSQL_NUMMYSQL_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);
    }
}
Run Code Online (Sandbox Code Playgroud)

请注意"&"之前$value将其作为参考.

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