Подскажите, как возвратить ассоциативный массив, с новым добавленным ключом и его значением? создал функцию и проверяю её, но она возвращает не то что надо. не могу понять что делаю не так. Сама функция: Код (Text): function getProductsByCat($itemId) { $sql = "SELECT t1.ID, t1.NAME as NAME, t1.PICTURE as PICTURE, t1.PRICE_RUS as PRICE_RUS, t1.ARCHIVE as ARCHIVE, t1.GROUP_NAME as GROUP_NAME, t1.ID_PRODUCT as ID_PRODUCT1, t2.ID_PRODUCT as ID_PRODUCT2, t2.ID_GROUP_OF_PRODUCTS as ID_GROUP_OF_PRODUCTS FROM `product` t1 LEFT JOIN `link_gr-of-prod_with_prod` t2 ON t1.ID_PRODUCT = t2.ID_PRODUCT WHERE `ID_GROUP_OF_PRODUCTS` = '{$itemId}' "; // d($sql); $rs = mysql_query($sql); if (mysql_num_rows($rs)!= 0){ $smartyRs = array(); while($row = mysql_fetch_assoc($rs)) { $result = $row['ID_PRODUCT2']; $sql = "SELECT * FROM `pictures` WHERE `ID_PRODUCT` = '{$result}' ORDER BY `ORDERA` DESC"; $res = mysql_query($sql); if (mysql_num_rows($res) != 0){ while($row1 = mysql_fetch_assoc($res)) { return $row1['PICTURE_BIG']; } } else{ return "img_default.jpg"; } $row['PICTURE_BIG'] = $row1; $smartyRs[] = $row; } } d($smartyRs); return $smartyRs; } Итог: возвращает мне только одно имя изображения с бд. (Debug: b_GA4212U_S3-2.jpg ) если закоментить цикл второго обращения к бд, то отобразится ассоциативный массив с добавленным ключом: Код (Text): function getProductsByCat($itemId) { $sql = "SELECT t1.ID, t1.NAME as NAME, t1.PICTURE as PICTURE, t1.PRICE_RUS as PRICE_RUS, t1.ARCHIVE as ARCHIVE, t1.GROUP_NAME as GROUP_NAME, t1.ID_PRODUCT as ID_PRODUCT1, t2.ID_PRODUCT as ID_PRODUCT2, t2.ID_GROUP_OF_PRODUCTS as ID_GROUP_OF_PRODUCTS FROM `product` t1 LEFT JOIN `link_gr-of-prod_with_prod` t2 ON t1.ID_PRODUCT = t2.ID_PRODUCT WHERE `ID_GROUP_OF_PRODUCTS` = '{$itemId}' "; // d($sql); $rs = mysql_query($sql); if (mysql_num_rows($rs)!= 0){ $smartyRs = array(); while($row = mysql_fetch_assoc($rs)) { $result = $row['ID_PRODUCT2']; $sql = "SELECT * FROM `pictures` WHERE `ID_PRODUCT` = '{$result}' ORDER BY `ORDERA` DESC"; $res = mysql_query($sql); // if (mysql_num_rows($res) != 0){ // while($row1 = mysql_fetch_assoc($res)) { // return $row1['PICTURE_BIG']; // } // // } // else{ // return "img_default.jpg"; // } $row['PICTURE_BIG'] = $row1; $smartyRs[] = $row; } } return $smartyRs; } Код (Text): Debug: Array ( [0] => Array ( [ID] => 1 [NAME] => GA-4212UB/S3 [PICTURE] => [PRICE_RUS] => [ARCHIVE] => 1 [GROUP_NAME] => Автомобильное Зарядное Устройство [ID_PRODUCT1] => 1 [ID_PRODUCT2] => 1 [ID_GROUP_OF_PRODUCTS] => 420 [PICTURE_BIG] => ) [1] => Array ( [ID] => 14 [NAME] => GA-4212UB/S2 [PICTURE] => [PRICE_RUS] => [ARCHIVE] => 1 [GROUP_NAME] => Автомобильное Зарядное Устройство [ID_PRODUCT1] => 14 [ID_PRODUCT2] => 14 [ID_GROUP_OF_PRODUCTS] => 420 [PICTURE_BIG] => ) [PICTURE_BIG] без значения, так как часть кода под комментом, стоит раскоментить как вылетит имя изображения и ни какого массива. подскажите как правильно сделать. Цель: вернуть ассоциативный массив с его значением.
@AlexsaiL не уверен но видимо тебе нужно это PHP: if (mysql_num_rows($res) != 0){ while($row1 = mysql_fetch_assoc($res)) { $result[$i++]=$row1['PICTURE_BIG']; } return $result;
мне надо с первого запроса к БД взять ID_PRODUCT сравнить его с ID_PRODUCT во втором запросе и взять соответсвующее изображение прогнав через ассоциативный массив вернуть ключ со значением в первый ассоциативный(основной) массив
УрААА!!! получилось! а ларчик просто открывался!)))) в общем я не туда вставил эту строку : Код (Text): $row['PICTURE_BIG'] = $row1['PICTURE_BIG']; старый код : Код (Text): if (mysql_num_rows($res) != 0){ while($row1 = mysql_fetch_assoc($res)) { return $row1['PICTURE_BIG']; } } else{ return "img_default.jpg"; } $row['PICTURE_BIG'] = $row1['PICTURE_BIG']; а надо было строку кода прописывать после закрывающийся фигурной скобки цикла while! : Код (Text): while($row1 = mysql_fetch_assoc($res)) { $row['PICTURE_BIG'] = $row1['PICTURE_BIG']; }