#php
Вопрос:
Мне нужен возвращаемый массив в функции. Когда я использовал это, возвращая этот массив ( ):
function menuOlustur($ana_kategoriler){
global $db;
$alt_kategori_durum = '';
$alt_kategori;
foreach ($ana_kategoriler as $kategori) {
$alt_kategori = $db->rawQuery('select * from s_kategoriler where kategori = ' . $kategori['id'] . ' and durum=1 order by sira asc');
}
return $alt_kategori;
}
и я использовал это, возвращая еще один индекс в массиве.
function menuOlustur($ana_kategoriler){
global $db;
$alt_kategori_durum = '';
$alt_kategori;
foreach ($ana_kategoriler as $kategori) {
$alt_kategori[] = $db->rawQuery('select * from s_kategoriler where kategori = ' . $kategori['id'] . ' and durum=1 order by sira asc');
}
return $alt_kategori;
}
Мой $ana_kategoriler-это массив, вызывающий такой запрос
$ana_k_cek = $db->rawQuery('select id, kategori, adi_' . $dil . ' as adi,link_' . $dil . ' as link from s_kategoriler where m_id=5 and durum=1 order by sira asc ');
что я могу сделать ?
Комментарии:
1. Я вижу некоторые проблемы в вашем коде, но также можете ли вы опубликовать переменную od $ana_kategoriler перед вызовом функции menuOlustur? В вашем первом коде foreach не имеет смысла, так как $alt_kategori будет выводить запрос на последний «идентификатор» из вашего параметра $ana_kategor. Ваш второй код лучше, но, пожалуйста, замените $alt_kategori; на $alt_kategori = array();
Ответ №1:
ИЗМЕНИТЬ: исправлен запрос, не должен быть категорией = 1,2,3,4, но категорией В(1,2,3,4)
Я предлагаю изменить ваш код на:
function menuOlustur($ana_kategoriler){
global $db;
/* first - collect all ids */
$ids = array();
foreach ($ana_kategoriler as $kategori) {
$ids[] = $kategori['id'];
}
/* return empty array if there is no ids, or return result of single query matching all results with given ids */
return count($ids) > 0 ? $db->rawQuery('select * from s_kategoriler where kategori IN( ' . implode(",",$ids) . ') AND durum=1 order by sira asc') : array();
}
Комментарии:
1.
kategori = ' . implode(",",$ids)
не сработает. Это создаст недопустимый запрос:kategori = 1,2,3,4,5...
. если вы хотите выбрать из списка, разделенного запятыми, вам нужно использоватьWHERE kategori IN (1,2,3,4,...)
.