- How do I echo the key or value from inside a multidimentional array without writing its key in the echo statement?
- 3 Answers 3
- PHP – Получить имя ключа для значения массива
- Solutions Collecting From Web of «PHP – Получить имя ключа для значения массива»
- How to get the key name in PHP? [duplicate]
- How to loop through an associative array and get the key?
How do I echo the key or value from inside a multidimentional array without writing its key in the echo statement?
I have a multidimensional array and would like to call the key and the value separately, of individual levels inside the array. Now with a normal array, I can do this by writing:
$example = array('one', 'two', 'three'); echo $example[0];
$example = array( 'optionone' => array('one', 'two', 'three'), 'optiontwo' => array('a','b','c'), 'optionthree' => array(1,2,3) ); echo $example[0]; echo $example[0][0];
Instead of echoing ‘optionone’ followed by ‘one’ I get nothing returned, and no error code. When trying to see why this is happening by using:
NULL is returned. I would really appreciate if someone could tell me how to correctly get/echo/call ‘optionone’ to return from the array as a string: ‘optionone’ without writing the name and how can I call the value ‘one’ without writing:
I’m trying to create something where it doesn’t know the key name, so it rather is going by the position of the keys but i would like to be able to return the key names at different points in the program but I can’t seem to figure out how to do this.
3 Answers 3
Just get your associative keys into an array with array_keys() , so you can access them as a 0-based indexed array, e.g.
So with array_keys($example) you end up with the following array:
Array ( [0] => optionone [1] => optiontwo [2] => optionthree )
Which you then can access as you want it:
array('one', 'two', 'three'), 'optiontwo' => array('a','b','c'), 'optionthree' => array(1,2,3) ); $keys = array_keys($example); echo $keys[0] . "
"; echo $example[$keys[0]][0]; ?>
The outer array in your example is an associative array. There is not value at index 0 . If you need to get to to the first key in the associative array without knowing the name of the key you would need to do something like:
$example = array( 'optionone' => array('one', 'two', 'three'), 'optiontwo' => array('a','b','c'), 'optionthree' => array(1,2,3) ); //get array keys into array $example_keys = array_keys($example); // get value at first key in $example array $first_inner_array = $example[$example_keys[0]]; // get first value from first inner array $first_value = $first_inner_array[0]; // Or to get an arbitrary value: $x = . // whatever inner array you want to get into $y = . // whatever index within inner array you want to get to $value = $example[$example+keys[$x]][$y];
I would say that if you find yourself doing this in code, you probably have your data structured poorly. Associative arrays are not meant to convey any sort of element ordering. For example, if you changed your example array to this:
$example = array( 'optiontwo' => array('a','b','c'), 'optionone' => array('one', 'two', 'three'), 'optionthree' => array(1,2,3) );
You would get a different value retrieved from above code even though the relationship between outer array keys and inner array contents has not been changed.
PHP – Получить имя ключа для значения массива
Мне нужно узнать индекс $arr[‘firstStringName’] чтобы я мог перебирать array_keys($arr) и возвращать ключевую строку ‘firstStringName’ своим индексом. Как я могу это сделать?
Solutions Collecting From Web of «PHP – Получить имя ключа для значения массива»
Если у вас есть значение и вы хотите найти ключ, используйте array_search() следующим образом:
$arr = array ('first' => 'a', 'second' => 'b', ); $key = array_search ('a', $arr);
$key теперь будет содержать ключ для значения ‘a’ (то есть ‘first’ ).
вернет значение ключа для текущего элемента массива
Если я правильно понимаю, вы не можете просто использовать:
Если динамика имени, то вы должны иметь что-то вроде
что означает, что ключ $ содержит значение ключа.
Вы можете использовать array_keys() чтобы получить ВСЕ ключи массива, например
$arr = array('a' => 'b', 'c' => 'd') $x = array_keys($arr);
Да, вы можете infact php – это один из немногих языков, которые предоставляют такую поддержку.
используйте array_keys (), чтобы получить массив всех уникальных ключей.
Обратите внимание, что массив с именованными ключами, такими как ваш $ arr, также можно получить с помощью числовых индексов, например $ arr [0].
если вам нужно вернуть элементы массива с одинаковым значением, используйте функцию array_keys ()
$array = array('red' => 1, 'blue' => 1, 'green' => 2); print_r(array_keys($array, 1));
$array = [1=>'one', 2=>'two', 3=>'there']; $array = array_flip($array); echo $array['one'];
Проверьте документацию на array_keys()
вы можете использовать ключевую функцию php для получения имени ключа:
'apple', 'fruit2' => 'orange', 'fruit3' => 'grape', 'fruit4' => 'apple', 'fruit5' => 'apple'); // this cycle echoes all associative array // key where value equals "apple" while ($fruit_name = current($array)) < if ($fruit_name == 'apple') < echo key($array).'
'; > next($array); > ?>
как здесь: PHP: key – Manual
- Использование нескольких баз данных в CodeIgniter
- Как я могу проверить покупку Google в приложении в php?
- Создать продукт из модуля в preashashop
- Удалить повторяющийся символ
- simplexml_load_string () не будет считывать мыльный ответ с помощью «soap:» в тегах
- Как минимизировать JS или CSS на лету
- Как предотвратить автоматические атаки AJAX
- Как преобразовать preg_replace e в preg_replace_callback?
- PDO FETCH_INTO $ этот класс не работает
- Перезаписать строку в файле с помощью PHP
- mysql_select_db () ожидает, что параметр 2 будет ресурсом, объект указан
- Отправить данные пользователя moodle после регистрации
- передать параметры php с оболочкой
- Как использовать функцию mysql_real_escape_string в PHP
- Можно добавить цвет фона к прозрачному изображению с помощью GD и PHP
How to get the key name in PHP? [duplicate]
I recently got a project where I have to create a third-dimensional array which have to be associative. So I defined a third-dimensional array like this:
$movies = array( "Action" => array( array( "Title" => "Nobody", "Year Released" => "2021" ), array( "Title" => "Monster Hunter", "Year Released" => "2020" ), array( "Title" => "Tenet", "Year Released" => "2020" ), array( "Title" => "The Hitman's Bodyguard", "Year Released" => "2017" ), array( "Title" => "Wrath of Man", "Year Released" => "2021" ) ), "Comedy" => array( array( "Title" => "The Hangover", "Year Released" => "2009" ), array( "Title" => "Minions", "Year Released" => "2015" ), array( "Title" => "Deadpool", "Year Released" => "2016" ), array( "Title" => "Scary Movie", "Year Released" => "2000" ), array( "Title" => "Blockers", "Year Released" => "2018" ) ) );
And I was trying to display the genres of the movies, along with their title and the year released. However, whenever I try to get the genres, instead I get Array. Here is the code I used:
foreach ($movies as $genres) < echo "$genres
"; while (list ($index, $array) = each ($genres)) < echo "Movie number: $index
"; while (list ($k, $v) = each ($array)) < echo "$k - $v
"; > echo "
"; > echo "
"; >
Part of the result (On the actual page, each line are broken into four lines. It’s just this website that’s messing with the result.): Array Movie number: 0 Title — Nobody Year Released — 2021 Movie number: 1 Title — Monster Hunter Year Released — 2020 Movie number: 2 Title — Tenet Year Released — 2020 Movie number: 3 Title — The Hitman’s Bodyguard Year Released — 2017 Movie number: 4 Title — Wrath of Man Year Released — 2021 How do I get the name of the genres?
How to loop through an associative array and get the key?
If you use array_keys() , PHP will give you an array filled with just the keys:
$keys = array_keys($arr); foreach ($keys as $key)
Alternatively, you can do this:
foreach ($arr as $key => $value)
Nobody answered with regular for loop? Sometimes I find it more readable and prefer for over foreach
So here it is:
$array = array('key1' => 'value1', 'key2' => 'value2'); $keys = array_keys($array); for($i=0; $i < count($keys); ++$i) < echo $keys[$i] . ' ' . $array[$keys[$i]] . "\n"; >/* prints: key1 value1 key2 value2 */
This is useful in some circumstances when foreach glitches out for unexplainable reasons. Good to always have at least two ways to do things.
Also useful for when you want to combine two subsequent array items together. i+=2 and then using $array[$keys[$i]].»_».$array[$keys[$i+1]] Just incase someone else has this same problem
The bugs in foreach are described here: php.net/manual/en/control-structures.foreach.php If you are using PHP 7, nested foreaches and foreach references work as intended. If you are using PHP 5, you should avoid using foreach by reference values and since all foreaches use internal array pointer ( current($Array) ) nesting foreaches or using PHP array functions can do weird things.
@jdrake That would be so funny, if randomly foreach does not work and you just have to relace by a for-loop. This is something they should have implemented in INTERCAL