Функция, которая в качестве параметра принимает массив

Ребята, кто опытные, обращаюсь к вам. Хотела этот массив реализовать через функцию и вывести на экран двумя способами: через return и через echo. Сделать не смогла, только намучилась. Спасибо, кто отзовётся и не оставит запрос без внимания.

<?php
ini_set('display_errors',1);
error_reporting(E_ALL);
// error_reporting(E_ERROR | E_WARNING | E_PARSE);

$regions = array(
'Польша' => array('Краков', 'Варшава', 'Лодзь'),
'Франция' => array('Париж', 'Марсель', 'Лион', 'Тулуза'),
'Испания' => array('Барселона', 'Валенсия', 'Сан-Хосе'),
'Чехия' => array('Прага', 'Бенешов', 'Вальтице', 'Бржецлав')

);
foreach($regions as $country => $cities){
echo "<h2>$country</h2>";

for($a = count($cities) - 1; $a >=0; $a--){
echo $cities[$a]. '<br>';
}
}


P.s. Совсем простенькая, вот такая функция мне понятна, а, что сложней пока не могу - только начинаю изучать php. Спасибо.

function square($n) {
echo $n * $n;
}
echo square(5);
echo square(5).'<br>';
 
<?php
$regions=array(
'Польша' => array('Краков', 'Варшава', 'Лодзь'),
);

function draw($regions,$returnThat='return'){

$result=false;

foreach($regions as $country => $cities){

$result.="<h2>$country</h2>";

for($a=count($cities)-1;$a>=0;$a--){

$result.=$cities[$a]. '<br>';
}
}

if($returnThat=='return'){

return $result;
}

echo $result
}

как то так ...
 
@Мария Кирюшина, оператор return не выводит на экран. Функция не должна менять выводной поток (выводить на экран), если это не ее основное назначение.
в общем виде

краткий блок для автодокументатора
/**
* name - делает то-то
* $arr - массив городов по странам
* $flagOut boolean - труе вывод
* return string or false в случае ошибки
*/
тело функции
function name($arr , $flagOut = false){
$r ='' ; // инициализация возвращаемого значения
if(!is_array($arr)) return false;

делаем что нужно
в вашем случае собираем вывод в переменную
$r.='очередной кусок вывода';

if($flagOut) echo $r;
return $r;
}
 
Последнее редактирование:
Внутри цикла использовать еще один foreach, нахрен выкинуть for.
Перед работой с данными вывести что внутри через print_r или var_dump и понять, как можно итерировать тот или иной массив - для вас это главное сейчас.
 
  • Like
Реакции: WMix
@rasschitai, спасибо!, что не поленился выложить наглядный пример. Нашлось ещё такое решение, если тебе будет интересно:
PHP:
function get_countries_html($regions)
{
    $data = '';

    foreach($regions as $country => $cities)
    {   
        $data .= "<h2>$country</h2>";

        foreach($cities as $city)       
            $data .= $city . '<br>';
   }
  
    return $data;
}

echo get_countries_html($regions);

Похоже это код, о котором упоминал c0dex.
 
Последнее редактирование:
@c0dex, спасибо за совет! Вот это пока не умею: вывести что внутри через print_r или var_dump. Буду благодарна, если объяснишь или подскажешь где это изложено человеко-понятно.
 
http://php.net/print_r
http://php.net/var_dump
@rasschitai, спасибо!, что не поленился выложить наглядный пример. Нашлось ещё такое решение, если тебе будет интересно:
PHP:
function get_countries_html($regions)
{
    $data = '';
    print_r($regions); die();
    foreach($regions as $country => $cities)
    {  
        $data .= "<h2>$country</h2>";

        foreach($cities as $city)      
            $data .= $city . '<br>';
   }
 
    return $data;
}

echo get_countries_html($regions);

Похоже это код, о котором упоминал c0dex.
 
@antson, оператор return не выводит на экран, а возвращает значение - это уже понятно. "Функция не должна менять выводной поток (выводить на экран), если это не ее основное назначение.
в общем виде"
- это не совсем, внеси ясность пожалуйста.
 
Какую букву вам нужно пояснить?…
Если основным назначением функции НЕ ЯВЛЯЕТСЯ "вывод на экран", то она НЕ ИМЕЕТ ПРАВА ничего выводить на экран.
Я не уверен, что именно вы делаете вашим кодом, но мне кажется, что вы ищете шаблонизатор.
 
@AnrDaemon, не совсем так. В самых малопонятных случая мне проще взять готовый кусочек кода и внимательно и усердно разбирать и пытаться понять его, что и буду делать сегодня с твоим кодом. Но так не всегда, что-то бывает понятно сразу.
Очень хочется научиться писать качественный код php.
 
Это как "хочется научиться жить правильно".
Желание, само по себе, похвальное. Но так не бывает, чтобы щёлк - и всё сразу правильно.
Сначала надо научиться жить. Дышать, стоять, ходить…
В вашем случае, надо научиться читать документацию. На ваше счастье, у PHP самая толково организованная документация из всех, что я когда-либо видел.
Чтобы постоянно не бегать в интернет, можете скачать HTML help.
На английском (желательно) http://php.net/get/php_manual_en.chm/from/a/mirror либо на русском http://php.net/get/php_manual_ru.chm/from/a/mirror
 
:D Не знаю, куда они русское зеркало дели, но сам хелп русский… местами.
Качайте с любого зеркала.
 
Если нет желания/возможности возиться с IDE, а редактор позволяет подключать помощь, это на самом деле удобно.
Все функции всех библиотек не упомнишь.
 
а как называется С(стать)ПВПФ
Viktoriya_Karaseva_050609.jpg
 
Последнее редактирование:
Сверху