2015-05-22 1 views
0

У меня есть два массива, как этотphp codeigniter: как объединить два массива, чтобы дать больше значения массиву?

массива 1

array(3) { [0]=> int(14) [1]=> int(16) [2]=> int(17) } 

массив 2

array(3) { [0]=> float(0.46902846738366) [1]=> float(0.40289063077504) [2]=> float(0.54903658244928) } 

массив 1 представляет собой массив, который содержит таблицу базы данных идентификатора на значение соответствующего массива ,

14, 16, 17 - это идентификатор моих таблиц базы данных.

массив 2 представляет собой массив, содержащий результаты математических операций, которые я сделал. У меня массив - это динамический массив.

поэтому я хочу

идентификатор 14 имеет значение 0.46902846738366

,

идентификатор 16 имеет значение 0.40289063077504

и

идентификатор 17 имеет значение 0.54903658244928

. то каждый идентификатор сохраняется в каждой из переменных.

Как объединить два массива ?? Спасибо!

+0

Баю, вам нужно что-то вроде этого массива (3) {[0] => array (2) {[0] => int (14) [1] => float (0.343434)} [1] => array (2) {[0] => int (16) [1] => float (0.123454)} [2] => array (2) {[0] => int (17) [1] => float (0.3454345)}}? – Mohammadhzp

+0

@Mohammadhzp да, я хочу это значение в сочетании с id. Могу ли я получить доступ к данным в моих таблицах базы данных с помощью этого массива? и могут ли быть какие-либо ключи массива сохранены в отдельных переменных? например, для id 14 $ a, $ b для id 17 ...................... –

+0

@ rizier123: Это не дубликат, лучше открыть вопрос снова так, чтобы люди ответили на это – Mohammadhzp

ответ

1

Из Вашего вопроса, чтобы объединить массивы можно использовать array_combine застегнуть массив вместе

<?php 
$array_a = [14,16,17]; 
$array_b = [0.33333, 0.6434, 0.123456]; 
$zip_array = array_combine($array_a, $array_b); 

Это будет ответить на ваш вопрос, как и за Ваш комментарий, если вы хотите, чтобы получить идентификаторы как переменные со значением вы можете сделать это:

extract($zip_array, EXTR_PREFIX_ALL, 'id'); // extract all variable and prefix them with id_ 
print_r($zip_array); 
echo $id_14; // the same as $zip_array[14]; 

Здесь я добавил «ID» в качестве префикса к переменным, так как переменная в PHP не может быть числом, вы можете использовать любой префикс вы хотите

обновление: за @u_mulder упоминалось вы можете использовать array_map() тоже лучше практика будет

$zip_array = array_map(NULL, $array_a, $array_b); 

, но в этом случае вы не можете извлечь значения правильно

+0

wow прохладный !! спасибо @Mohammadhzp! –

+0

следующий вопрос: как получить доступ к информации из базы данных с помощью идентификатора? например, у меня есть таблица «хранилище», которая имеет идентификаторы 14, 16, 17.? Кроме того, id, который имеет значение, прежде чем я буду выполнять математические операции для вычисления идентификатора, который имеет наибольшее значение, использует функцию max(); Можете ли вы научить меня алгоритмам? Еще раз спасибо :-) @Mohammadhzp –

+0

Ваше приветствие, для вашего другого вопроса лучше задать новый вопрос и оставить этот вопрос ясным для кого-то другого – Mohammadhzp

0

Если вы хотите быть один массив для ключей, а другой - для значений, чем вы можете использовать array_combine:

$result = array_combine(
    array(14, 16, 17), 
    array(0.46902846738366, 0.40289063077504, 0.54903658244928) 
); 

Если вы хотите id и value в качестве элементов подрешетки, то вы можете использовать array_map :

$ids = array(14,16,17); 
$vals = array(0.46902846738366, 0.40289063077504, 0.54903658244928); 

$result = array_map(
    function($id, $val) { 
     return array($id, $val); 
    }, 
    $ids, 
    $vals 
); 
0

Вы ищете что-то в этом роде? Предполагается, что оба массива будут иметь одинаковый размер. Вы можете изменить int, float, если вы не хотите форсировать, и хотите вместо этого использовать строковый массив.

<?php 
$array1 = array('1','24','98'); 
$array2 = array('0.8778','1.764646','6.9488499'); 

$result = array(); 
for($i=0;$i<sizeof($array1);$i++){ 
$result[] =array('0' =>(int)$array1[$i], '1' => (float)$array2[$i]); 
} 
var_dump($result); 

Выход

array(3) { 
    [0]=> 
    array(2) { 
    [0]=> 
    int(1) 
    [1]=> 
    float(0.8778) 
    } 
    [1]=> 
    array(2) { 
    [0]=> 
    int(24) 
    [1]=> 
    float(1.764646) 
    } 
    [2]=> 
    array(2) { 
    [0]=> 
    int(98) 
    [1]=> 
    float(6.9488499) 
    } 
} 

Лучше практика будет использовать функции PHP, как указано в других ответах. Это простой способ.

Смежные вопросы