Добрый день. Есть два массива вида: PHP: //первый массив array { [0]=> array { ["name"]=> string"name1" ["test"]=> string "В работе" } //второй массив array { [0]=> array { ["name"]=> string"name1" ["test"]=> string "не в работе" } Вопрос. Как обработать первый массив чтобы вставить в объект 'test' содержимое из 2го массива. если у них одинаковый объект 'name' ? Напишу как я это вижу, но никак не могу реализовать: PHP: $array1; $array2; $array[] = $array1; $array[] = $array2; foreach ($array as $item){ foreach ($item as $k => $v){ if($item[$k]['name'] == $item[$k]['name']){ $item[$k]['test'] = $item[$k]['test']; } } } Помогите пожалуйста написать правильно, голова не варит =(
Написал так, работает: PHP: $array1; $array2; for($i = 0; $i < count($array2); ++$i) { if($array2[$i]['name'] === $array1[$i]['name']){ $array2[$i]['eam'] = $array1[$i]['eam']; } } Но если у меня вдруг в массиве имена поменяются местами, то это работать не будет. Подскажите как правильно написать =(
PHP: $a = [ 'name' => 'name1', 'test' => 'В работе' ]; $b = [ 'name' => 'name1', 'test' => 'не в работе' ]; $a = $b + $a; print_r($a) Код (Text): Array ( [name] => name1 [test] => не в работе ) https://bolknote.ru/all/4389/
@pr0n1x так не годится, массивы не одинаковые, там просто есть идентичные имена объекта PHP: $a = [ 'name' => 'name1', 'test' => 'В работе' ]; $b = [ 'name' => 'name1', 'test' => 'не в работе' 'atr' => 'еще что то' ]; $a = $b + $a; PHP: Message: Undefined index: atr
Все работает, ты запятые правильно расставляй или пользуйся IDE, которая ошибки синтаксические показывает, проверь этот код PHP: $a = [ 'name' => 'name1', 'test' => 'В работе' ]; $b = [ 'name' => 'name1', 'test' => 'не в работе', 'atr' => 'еще что то' ]; $a = $b + $a; print_r($a);
Не "с базы", а из базы. Из базы надо брать ровно столько сколько нужно, а не лепить костыли на php. P.S. я понимаю на форуме полно не русских, но всё равно бесит "с базы"
Частично переезжает, ну вот смотри, есть две хоста на которых крутятся sql сервер, дергаем их в массив: PHP: $db['serv1'] = array( 'dsn' => '', 'hostname' => 'serv1', 'username' => 'username', 'password' => 'password', 'database' => 'database', 'dbdriver' => 'sqlsrv', 'dbprefix' => '', 'pconnect' => FALSE, 'db_debug' => (ENVIRONMENT !== 'production'), 'cache_on' => FALSE, 'cachedir' => '', 'char_set' => 'utf8', 'dbcollat' => 'utf8_general_ci', 'swap_pre' => '', 'encrypt' => FALSE, 'compress' => FALSE, 'stricton' => FALSE, 'failover' => array(), 'save_queries' => TRUE ); $db['serv2'] = array( 'dsn' => '', 'hostname' => 'serv2', 'username' => 'username', 'password' => 'password', 'database' => 'database', 'dbdriver' => 'sqlsrv', 'dbprefix' => '', 'pconnect' => FALSE, 'db_debug' => (ENVIRONMENT !== 'production'), 'cache_on' => FALSE, 'cachedir' => '', 'char_set' => 'utf8', 'dbcollat' => 'utf8_general_ci', 'swap_pre' => '', 'encrypt' => FALSE, 'compress' => FALSE, 'stricton' => FALSE, 'failover' => array(), 'save_queries' => TRUE ); Теперь вынужден делать два запроса и соединять их средствами рнр. Нельзя написать вот так например, выдаст ошибку: PHP: $db = $this->load->database('serv1', TRUE); $db2 = $this->load->database('serv2', TRUE); $db->select('RO.Наименование AS name, TS.Наименование AS test'); $db->join("table1 RO", 'RO.id = RF.test2', 'left'); $db2->join('table2 TS', 'TS.id = RO.test3', 'left'); $db->group_by('RO.Наименование, TS.Наименование'); $db->order_by('name', 'ASC'); $query = $db->get('table4 RF'); Выдаст ошибку, надо тянуть и с первого сервера и со второго, и соединить, соединил в итоге так: PHP: $test1 =$this->base1(); $test2 = $this->base2(); for($i = 0; $i < count($test2); ++$i) { if($test2[$i]['name'] === $test1[$i]['name']){ $test2[$i]['test'] = $test1[$i]['test']; } } return $test2;