Взрыв массива для сообщения электронной почты - PullRequest
0 голосов
/ 30 июля 2011

Я пытаюсь создать еженедельное электронное письмо для пользователей моего сайта, в котором перечислены местоположения, в которые добавлена ​​новая информация. Когда кто-то добавляет информацию, таблица получает два числа: одно для штата и второе для округа. Первый шаг в моей работе с cron - взять числа и преобразовать их в формат округа (штат Аламеда, Калифорния). В конце каждого преобразования я добавил | для использования в качестве разделителя. Эта часть работает отлично. Затем я перебираю каждого пользователя, чтобы отправить эту информацию по электронной почте, но эта часть не работает. В итоге я получаю слово-массив вместо моего округа, формат штата. Чего мне не хватает?

Это код, который выполняет 1-й шаг, который прекрасно работает:

$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 ]

1 голос
/ 30 июля 2011

Разнесение даст вам массив

$pizza  = "piece1 piece2 piece3 piece4 piece5 piece6";
$pieces = explode(" ", $pizza);
echo $pieces[0]; // piece1
echo $pieces[1]; // piece2

, поэтому, когда вы используете функцию разнесения, в вашем случае она разнесет строку в массив

.. write

<code>$locals = explode("|", $locations);
echo "<pre>";print_r($locals);echo "
";

и у вас будет точное представление, и оно решит вашу проблему

0 голосов
/ 30 июля 2011

Во-первых, какова цель $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.

В-третьих, для взрыва требуется строка и поворотыэто в массив.

Если вы делаете длинную строку, почему вы хотите разложить ее обратно на части, из которых вы ее построили?

Я бы предложил хранить ваши штаты, графства и созданные ссылки вмассивы.Затем вы можете использовать содержимое этих массивов по своему желанию для создания ваших электронных писем.

Чтобы посмотреть, что в массиве, используйте print_r () или var_dump () .Вы можете зацикливать массивы с помощью foreach () .

<code><?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 "
";?>

Выше приведен массив, подобный

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