Как превратить массив значений в другой индексированный массив?
Это продолжение другого вопроса, который мне было поручено разделить. У меня есть другой набор столбцов и их значений, некоторые из которых имеют значения, а некоторые нет. Например:
$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 ответа
Это сделает это.
foreach($vCountries as $id => $value)
{
if($value)
{
echo "<th id=\"$id\">$value</th>";
}
}
Это выводит только записи со значениями. Каждый идентификатор выводится как <th>
идентификатор, и каждое значение отображается внутри <th>
тег.
Это генерирует код, который вы хотите:
foreach ($vCountries as $key => $value)
{
if (strlen($value) > 0)
echo "<th id=\"$key\">$value</th>";
}
Если ваша цель - сгенерировать указанный 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";
}
}