Как превратить массив значений в другой индексированный массив? - PullRequest
0 голосов
/ 03 февраля 2011

это продолжение другого вопроса, который мне было поручено разделить. У меня есть другой набор столбцов и их значений, некоторые из которых имеют значения, а некоторые нет. Например:

$vCountries ['country1'] = "Value of country1";
$vCountries ['country2'] = "Value of country2";
$vCountries ['country3'] = "";
$vCountries ['country4'] = "Value of country4";
$vCountries ['country5'] = "";

...through to

$vCountries ['country50'] = "Value of country50";

Я хотел бы сгенерировать следующий пример кода (только когда он содержит значение):

<th id="country1">Value of country1</th>
<th id="country2">Value of country2</th>
<th id="country4">Value of country4</th>

...

Поскольку все идентификаторы стран имеют общие имена с индексом, который отличает их, я хотел бы, чтобы эти заголовки создавались динамически.

Кто-то предложил следующий код:

for ($i = 1; $i <= 50; ++$i) {
$vCountries['country' . $i] = "Value of country " . $i;}

Но, во-первых, я не понимаю, как это работает и как я могу разобрать его в код в верхней части, потому что сейчас он печатает только массив массив массивов и т. Д., А "Значение страны. $ Я" не универсальный и проиндексированный, это фактическое значение, различное для каждой страны, поэтому мне все равно придется перечислять его вручную, нет?

Есть идеи?

Спасибо

Ответы [ 3 ]

2 голосов
/ 03 февраля 2011

Это будет сделано.

foreach($vCountries as $id => $value)
{
    if($value)
    {
        echo "<th id=\"$id\">$value</th>";
    }
}

Это выводит только записи со значениями.Каждый идентификатор выводится как идентификатор <th>, а каждое значение отображается внутри тега <th>.

0 голосов
/ 03 февраля 2011

Если ваша цель - сгенерировать указанный HTML-код из массива, который уже определен, то это может быть решением для вас:

// Loop the array
foreach ($vCountries as $key => $value) {
    // If value is not empty
    if (!empty($value)) {
        // display the line
        echo '<th id="'.$key.'">'.$value.'</th>'."\n";
    }
}
0 голосов
/ 03 февраля 2011

Это генерирует код, который вы хотите:

foreach ($vCountries as $key => $value)
{
    if (strlen($value) > 0)
        echo "<th id=\"$key\">$value</th>";
}
...