我正在尝试为我网站的用户生成每周电子邮件,其中列出了添加了新信息的位置。当有人添加信息时,表格会收到两个数字,一个用于州,第二个用于县。我的cron工作的第一步是取数字并将它们转换为县,州格式(例如加利福尼亚州阿拉米达)。在每次转换结束时,我添加了一个|用作分隔符。这部分很完美。接下来,我遍历每个用户通过电子邮件发送此信息,但此部分不起作用。我最终得到的是数组而不是我的县,州格式。我错过了什么?
这是执行第一步的代码,它运行得很好:
$i = 0;
while ($row = mysql_fetch_assoc($result)) {
$SID = $row['SID'];
$CID = $row['CID'];
$states = mysql_query("SELECT * FROM State WHERE ID = '$SID'");
while ($state = mysql_fetch_array($states)) {
$statename = $state['Name'];
}
$countys = mysql_query("SELECT * FROM County WHERE ID = '$CID'");
while ($county = mysql_fetch_array($countys)) {
$countyname = $county['Name'];
}
$locations = '<a href="http://hammerpins.net/display.php?state=' . $SID .' &county=' . $CID .'" >' . "$countyname, $statename ". '</a>' . "|";
$i = $i + 1;
}
这是我用于将数组分解为县,状态格式的代码,该格式无法正常运行。相反,我得到了单词数组。
$locals = explode("|", $locations);
$ locals在电子邮件中用作新信息列表。请指出我正确的方向。感谢
答案 0 :(得分:1)
explode会给你数组
$pizza = "piece1 piece2 piece3 piece4 piece5 piece6";
$pieces = explode(" ", $pizza);
echo $pieces[0]; // piece1
echo $pieces[1]; // piece2
所以当你使用explode函数时,它会将字符串分解为数组
在你的情况下..写
$locals = explode("|", $locations);
echo "<pre>";print_r($locals);echo "</pre>";
你会有确切的想法,它会解决你的问题
答案 1 :(得分:0)
首先,$i
的目的是什么?
其次,我认为你想要连接$locations
:
// This overwrites the variable - this is what you are doing
// at the end $locations will be the one single last link
$locations = '<a href="ht
// This adds to / concatenates - giving you a long strong of many links
$locations .= '<a href="ht
// ^ Note the period.
第三,explode确实需要一个字符串并将其转换为数组。
如果你制作一个长串,你为什么要将它重新分解成你构造它的部分呢?
我建议在数组中存储状态,countys和构造的链接。然后,您可以随意使用这些数组的内容来创建电子邮件。
要查看数组中的内容,请使用print_r()或var_dump()。您可以使用foreach()循环遍历数组。
<?php
$i = 0;
while ($row = mysql_fetch_assoc($result)) {
$SID = $row['SID'];
$CID = $row['CID'];
$states = mysql_query("SELECT * FROM State WHERE ID = '$SID'");
while ($state = mysql_fetch_array($states)) {
// There had better only be ONE statename per SID or you lose info!
$user_array[$i]['statename'] = $state['Name'];
}
$countys = mysql_query("SELECT * FROM County WHERE ID = '$CID'");
while ($county = mysql_fetch_array($countys)) {
// There had better only be ONE countyname per CID or you lose info!
$user_array[$i]['countyname'] = $county['Name'];
}
$user_array[$i]['link'] = '<a href="http://hammerpins.net/display.php?state=' . $SID .' &county=' . $CID .'" >' . "{$user_array[$i]['countyname']}, {$user_array[$i]['statename']} ". '</a>';
++$i; // add one to i
}
// Show the arrays:
echo "<pre>";
print_r($user_array);
echo "</pre>";
?>
上面给出了一个类似
的数组Array
(
[0] => Array
(
[statename] => CA
[countyname] => San Bernardino
[link] => <a href="blah...
)
[1] => Array
(
[statename] => OR
[countyname] => Multnomah
[link] => <a href="yada...
)
)
要使用数组,只需执行
foreach ($user_array as $single_user_item) {
echo $single_user_item['link'];
}