我有以下代码:
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”附加到它。
答案 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_NUM
? That 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
以使其成为参考。
我会做后者(我更喜欢foreach
到for
:)
答案 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附加到电子邮件行。