Получите индексное значение массива в PHP

попробуйте использовать 205 код состояния в ответе HTTP, это означает сброс содержимого, но это будет полезно, если вы используете браузер Google Chrome

, поскольку остальная часть браузера обрабатывает код 205, например, 200 оба успех, но без сброса содержимого

вы можете получить больше информации о 205 по этой ссылке

68
задан Blackbam 6 June 2018 в 16:34
поделиться

8 ответов

array_search - способ сделать это.

array_search (смешанный $ игла, массив $ haystack [, bool $ strict = FALSE]): смешанный

Из docs :

$array = array(0 => 'blue', 1 => 'red', 2 => 'green', 3 => 'red');

$key = array_search('green', $array); // $key = 2;
$key = array_search('red', $array);   // $key = 1;

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

133
ответ дан 24 November 2019 в 14:08
поделиться

Необходимо будет создать функцию для этого. Я не думаю, что с этой целью существует любая встроенная функция. Все массивы PHP ассоциативны по умолчанию. Так, если Вы не уверены в их ключах, вот код:

<?php

$given_array = array('Monday' => 'boring',
'Friday' => 'yay',
'boring',
'Sunday' => 'fun',
7 => 'boring',
'Saturday' => 'yay fun',
'Wednesday' => 'boring',
'my life' => 'boring');

$repeating_value = "boring";

function array_value_positions($array, $value){
    $index = 0;
    $value_array = array();
        foreach($array as $v){
            if($value == $v){
                $value_array[$index] = $value;
            }
        $index++;
        }
    return $value_array;
}

$value_array = array_value_positions($given_array, $repeating_value);

$result = "The value '$value_array[0]' was found at these indices in the given array: ";

$key_string = implode(', ',array_keys($value_array));

echo $result . $key_string . "\n";//Output: The value 'boring' was found at these indices in the given array: 0, 2, 4, 6, 7

0
ответ дан 24 November 2019 в 14:08
поделиться

Если вы делаете только несколько из них (и/или размер массива большой), то вы были на правильном пути с array_search:

$list = array('string1', 'string2', 'string3');
$k = array_search('string2', $list); //$k = 1;

Если вам нужны все (или многие из них), то цикл, вероятно, подойдет лучше:

foreach ($list as $key => $value) {
    echo $value . " in " . $key . ", ";
}
// Prints "string1 in 0, string2 in 1, string3 in 2, "
16
ответ дан 24 November 2019 в 14:08
поделиться

Другие люди предложили array_search () , который дает ключ элемента массива, в котором находится значение. Вы можете убедиться, что ключи массива являются смежными целыми числами, используя array_values ​​() :

$list = array(0=>'string1', 'foo'=>'string2', 42=>'string3');
$index = array_search('string2', array_values($list));
print "$index\n";

// result: 1

В своем вопросе вы сказали, что array_search () бесполезен. Вы можете объяснить почему? Что вы пробовали и почему это не соответствовало вашим потребностям?

8
ответ дан 24 November 2019 в 14:08
поделиться

Попробуйте PHP-функцию array_keys.

$key_string1 = array_keys($list, 'string1');
0
ответ дан 24 November 2019 в 14:08
поделиться

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

$list = array('string1', 'string2', 'string3');
echo "Key = ".array_search('string1', $list);
echo " Key = ".array_search('string2', $list);
echo " Key = ".array_search('string3', $list);

Или для индекса вы можете использовать

$list = array('string1', 'string2', 'string3');
echo "Index = ".array_search('string1', array_merge($list));
echo " Index = ".array_search('string2', array_merge($list));
echo " Index = ".array_search('string3', array_merge($list));
0
ответ дан 24 November 2019 в 14:08
поделиться

Этот код должен делать то же самое, что и ваша новая процедура, работая с правильным многомерным массивом.

 $arr = array(
  'string1' => array('a' => '', 'b' => '', 'c' => ''),
  'string2' => array('a' => '', 'b' => '', 'c' => ''),
  'string3' => array('a' => '', 'b' => '', 'c' => '')
 );

 echo 'Index of "string2" = '. array_search('string2', array_keys($arr));
1
ответ дан 24 November 2019 в 14:08
поделиться

Не могли бы вы уточнить?

$key = array_search('string2',$list)

мне подходит. Вы пытаетесь выполнить что-то более сложное?

1
ответ дан 24 November 2019 в 14:08
поделиться
Другие вопросы по тегам:

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