PHP: добавьте, чтобы оценить, если ключ уже существует, если не добавляют ключ

если бы Вы просто хотите часть между http://, и первая наклонная черта

string url = Request.Url.Host;

возвратилась бы, stackoverflow.com, если названо от этой страницы

Вот полное нарушение обычного порядка

12
задан Graviton 28 August 2009 в 10:13
поделиться

7 ответов

Вы можете решить проблему, используя массив для первого элемента («2e»):

$arr = array();

$arr['a'][] = '2e';
$arr['a'][] = '45';
$arr['a'][] = 'gt';

print_r($arr);
20
ответ дан 2 December 2019 в 04:09
поделиться

Возможны три ситуации:

  1. Ключ не определен
  2. Ключ определен, но еще не установлен в массив
  3. Ключ определен, а элемент является массивом.

Итак, в коде:

function appendThings(/* map[string,mixed] */ $array, /* string */ $key, /* string */ $value) {
    if (!isset($array[$key]))
        $array[$key] = $value;
    else if (is_array($array[$key]))
        $array[$key][] = $value;
    else
        $array[$key] = array($array[$key], $value);

    return $array;
}

Сложен только последний случай: если это не массив тем не менее, вам нужно будет составить один, используя текущее значение плюс новое.

12
ответ дан 2 December 2019 в 04:09
поделиться
function update_keypair($arr, $key, $val)
{
   if(empty($arr[$key])) $arr[$key] = array($val);
   else $arr[$key][] = $val;
}

делает именно то, что вы хотите.

4
ответ дан 2 December 2019 в 04:09
поделиться

Вам нужно написать функцию, которая это сделает. Или инициализируйте свой первый элемент как массив и используйте функцию array_push для добавления новых элементов.

$a = array('2e');
array_push($a, '45');
array_push($a, 'gt');
0
ответ дан 2 December 2019 в 04:09
поделиться
if (isset($array[$key]) {
  if (!is_array($array[$key]))
    $array[$key] = (array)$array[$key];
  $array[$key][] = $new_value;
} else {
  $array[$key] = $new_value;
}

Что-то в этом роде? Вы, безусловно, можете упростить это, добавив первое значение в виде одноэлементного массива или используя тернарные операторы, но в любом случае вам понадобится специальная функция для выполнения этой работы.

0
ответ дан 2 December 2019 в 04:09
поделиться

Строго массив:

$arr['a']=(is_array($arr['a'])? '2e' : array_merge(Array('2e'),$arr['a']));

Строка с разделителями:

$arr['a'].='2e'.'/'; // '/' is used as a separator in here.

если вам нужна строка в виде массива, просто выполните $ arr ['a'] = explode ("/", $ arr ['a']);

оба метода уродливы ... вы должны попробовать, как предложил Флориан, использовать всю переменную как массив.

Другой метод может заключаться в использовании интерфейса в PHp и построить что-то, что использует интерфейсы Iterator и ArrayAccess. ( http://us3.php.net/manual/en/class.iterator.php , http://us3.php.net/manual/en/class.arrayaccess.php )

0
ответ дан 2 December 2019 в 04:09
поделиться

Попробуйте это

$key="a";
$value="b";
$array=array();

if(!array_key_exists($key,$array)) $array[$key]=$value;
elseif(is_array($array[$key]))$array[$key][]=$value;
else $array[$key]=array($array[$key],$value);
0
ответ дан 2 December 2019 в 04:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: