Это таблица 1 со значениями id таблицы 2. Это таблица 2. Нужно создать 2 массива, которые будут разделяться по столбце "NAME", т.е. нужно как то разделить на array('Размер'=>'1', 'Размер'=>'2', 'Размер'=>'3') и array('Цвет'=>'31', 'Цвет'=>'32', 'Цвет'=>'33') Пробовал сделать следующее, но не вышло, прошу помощи. PHP: $data = explode(',', $rows['value']); foreach ($data as $key) { $d = mysqli_fetch_array(mysqli_query($db, "SELECT id, name FROM value WHERE id = '{$key}' ")); $r[] = array($d[0]=>$d[1]); }
PHP: Array ( [1] => Размер [32] => Цвет [2] => Размер [31] => Цвет [3] => Размер [33] => Цвет ) Этот массив нужно разделить на два по размеру и цвету Результат должен быть таким: PHP: Array ( [1] => Размер [2] => Размер [3] => Размер ) Array ( [32] => Цвет [31] => Цвет [33] => Цвет )
Вот так наверное: PHP: $a = array(1 => 'select', 2 => 'select', 3 => 'select', 31 => 'checkbox', 32 => 'checkbox', 33 => 'checkbox'); $b =[]; $c =[]; foreach ($a as $key => $val) { if($val == 'select') { $b[$key] = $val;}; if($val == 'checkbox') { $c[$key] = $val; }; } var_dump($b); var_dump($c);
В Вашем варианте в массиве if select, if checkbox - значения могут различаться, поэтому нужен динамический вариант
специально зарегистрировался на этом форуме ради этой темы думаю ссылки на конкурентов тут не приветствуются, поэтому процитирую сам себя
@zhenia3003 Ну так тогда можно: PHP: $a = array( 1 => 'select', 2 => 'select', 3 => 'select', 31 => 'checkbox', 32 => 'checkbox', 33 => 'checkbox' ); $a2 = []; foreach ($a as $key => $value) { $a2[$value][$key] = $value; unset($a[$key]); } print_r($a2); Результат будет таким: Код (Text): Array ( [select] => Array ( [1] => select [2] => select [3] => select ) [checkbox] => Array ( [31] => checkbox [32] => checkbox [33] => checkbox ) ) Больше у меня идей нет=)
Artur_hopf, спасибо), хороший вариант, я почти до такого дошел, у Вас он короче, чем мой: PHP: function itemSelect(){ global $rows, $db; if(strlen($rows['content_value']) > 0){ $data = explode(',', $rows['content_value']); foreach ($data as $val) { $d = mysqli_fetch_array(mysqli_query($db, "SELECT id, tag, name, title, value, cost FROM content_value WHERE id = '{$val}' ")); // $p[$d[0]] = $d[1]; $p[] = array("id" => $d[0], "name" => $d[1]); } $results = array(); foreach ($p as $page) { $results[$page["name"]][] = $page["id"]; } // natsort($p); echo '<pre>'; print_r($results); echo "<br><br></pre>"; } }
Вариант чёт больше чем выше. PHP: <?php $arr = Array ( 1 => 'Размер', 32 => 'Цвет', 2 => 'Размер', 31 => 'Цвет', 3 => 'Размер', 33 => 'Цвет' ); $keys = []; $found = []; $result = []; foreach($arr as $needle) { $res = array_keys($arr, $needle); if($res && !in_array($needle, $found)) { $keys[] = $res; $found[] = $needle; } } for($i = 0; $i < count($keys); $i++) { foreach($keys[$i] as $val) { $result[$i][$val] = $arr[$val]; } } var_dump($result);