爆炸电子邮件的数组

时间:2011-07-30 04:56:39

标签: php arrays explode

我正在尝试为我网站的用户生成每周电子邮件,其中列出了添加了新信息的位置。当有人添加信息时,表格会收到两个数字,一个用于州,第二个用于县。我的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在电子邮件中用作新信息列表。请指出我正确的方向。感谢

2 个答案:

答案 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'];
}