PHP

Php нужна помощь

Есть такой вывод:
'{photos-num}' => newGram($last_photos['cnt'], $lang['pro_30'], $lang['pro_31'], $lang['pro_32'])

Не получается сделать сначало lang а потом cnt что делать?

оно выводит так: 2 Мои фотографии
А хотелось бы: Мои фотографии 2

Помогите пожалуйста, уже по разному пробывал, а результата 0
измените функцию newGram
Алексей Ivanoff
Алексей Ivanoff
81 915
Лучший ответ
Ну смотри, давай разберем по частям тобою написанное: складывается впечатление, что функция newGram просто позволяет склонять фразу "Мои фотографии" в зависимости от количества и, тем самым, выводить что-то вроде "1 Моя фотография", "0 Моих фотографий", "2 Мои фотографии".

У тебя есть такие варианты:
1) Если тебе нужно это изменить только в этом месте, ты всегда можешь поверх заговнопарсить через regex например этот текст, вытащить из него только текст и сконкотенировать с количеством после.
`
как вариант:
if (!function_exists('newGramReverse')) {
function explodeNewGram($str){
$parts = explode(' ', $str);
$count = array_shift($parts);
return implode(' ', $parts) . ' ' . $count;
}
}

и юзать так

' { photos-num } ' => explodeNewGram(newGram($last_photos['cnt'], $lang['pro_30'], $lang['pro_31'], $lang['pro_32']))
`

2) Написать свою функцию, возвращающую вариант с обратным отображением, типо такого:
`
if (!function_exists('newGramReverse')) {
function newGramReverse($num, $form_for_1, $form_for_2, $form_for_5){
$num = abs($num) % 100; // берем число по модулю и сбрасываем сотни (делим на 100, а остаток присваиваем переменной $num)
$num_x = $num % 10; // сбрасываем десятки и записываем в новую переменную
if ($num > 10 && $num < 20) // если число принадлежит отрезку [11;19]
return $form_for_5 . ' ' . $num;
if ($num_x > 1 && $num_x < 5) // иначе если число оканчивается на 2,3,4
return $form_for_2 . ' ' . $num;
if ($num_x == 1) // иначе если оканчивается на 1
return $form_for_1;
return $form_for_5 . ' ' . $num;
}
}
И вызывать уже newGramReverse

' { photos-num } ' => newGramReverse($last_photos['cnt'], $lang['pro_30'], $lang['pro_31'], $lang['pro_32'])
`

3) Или такую свою функцию, возвращающую вариант с обратным отображением, но без количества:
`
if (!function_exists('newGramReverse')) {
function newGramReverse($num, $form_for_1, $form_for_2, $form_for_5){
$num = abs($num) % 100; // берем число по модулю и сбрасываем сотни (делим на 100, а остаток присваиваем переменной $num)
$num_x = $num % 10; // сбрасываем десятки и записываем в новую переменную
if ($num > 10 && $num < 20) // если число принадлежит отрезку [11;19]
return $form_for_5;
if ($num_x > 1 && $num_x < 5) // иначе если число оканчивается на 2,3,4
return $form_for_2;
if ($num_x == 1) // иначе если оканчивается на 1
return $form_for_1;
return $form_for_5;
}
}
И вызывать уже newGramReverse но добавлять в конце и количество тоже....

' { photos-num } ' => newGramReverse($last_photos['cnt'], $lang['pro_30'], $lang['pro_31'], $lang['pro_32']) . ' ' .$last_photos['cnt']
`

Но вообще г; вно какое-то вы месите, если честно.