Объединить переменную в PHP - PullRequest
0 голосов
/ 19 января 2012

У меня есть 2 переменные, которые содержат значения. Вот переменные:

$a = "1a, 2a, 3a, 3a_oth, 4a, 4a_oth";
$b = "1, 1, 8, Port, 10, UNIX";

Как я могу объединить обе переменные, чтобы получить это?

$c = array('1a'=>'1', '2a'=>'1', '3a'=>'8', '3a_oth'=>'Port', '4a'=>'10', '4a_oth'=>'UNIX');

Ответы [ 3 ]

4 голосов
/ 19 января 2012

Посмотрите на функцию array_combine.

Вы можете сделать что-то вроде этого, предполагая, что $a и $b являются разделенными запятыми строками, а не массивами. Если они уже являются массивами, вы можете пропустить шаг explode и просто передать их непосредственно в array_combine.

$a = "1a, 2a, 3a, 3a_oth, 4a, 4a_oth";
$b = "1, 1, 8, Port, 10, UNIX";

$c = array_combine( explode(",", $a), explode(",",$b) );

Функция explode превращает разделенные запятыми строки в массивы.

Затем для ключей нового массива используется массив на основе $a, а для значений - массив на основе $b.

3 голосов
/ 19 января 2012

Предполагая, что вышеуказанные переменные являются массивами, используйте array_combine .

Если $a и $b - строки, разделенные запятыми, то сначала используйте explode .

$a = explode("," $a); // only if $a is a string
$b = explode("," $b); // only if $b is a string

$a = array('1a', '2a', '3a', '3a_oth', '4a', '4a_oth'); // keys
$b = array('1', '1', '8', 'Port', '10', 'UNIX');        // values

$c = array_combine($a, $b); 
// outputs array('1a' => '1', '2a' => '1', '3a' => '8' ... )
1 голос
/ 19 января 2012

Если у вас есть две строки и вы хотите третью строку, а не ассоциативный массив:

$a = '1a, 2a, 3a, 3a_oth, 4a, 4a_oth';
$b = '1, 1, 8, Port, 10, UNIX';

function combine($a,$b){
    $c='';
    $aa = preg_split('/, /',$a);
    $bb = preg_split('/, /',$b);
    if(count($aa)!=count($bb))return false;
    for($i=0;$i<count($aa);$i++){
        $c.=$aa[$i].'='.$bb[$i];
        if($i!=count($aa)-1)$c.=', ';
    }
    return $c;
}
echo combine($a,$b); // returns 1a=1, 2a=1, 3a=8, 3a_oth=Port, 4a=10, 4a_oth=UNIX
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...