Данные в массиве изменяются, как их получать без редактирования кода?

161
07 декабря 2018, 04:20

Столкнулся с проблемой постоянного изменения вывода массива, мой массив

array(2) {
  [2]=>
  array(3) {
    ["title"]=>
    string(17) "Example COOL NICE"
    ["name"]=>
    string(13) "Bilal Shaheen"
    ["show_info"]=>
    NULL
  }
  ["_multiwidget"]=>
  int(1)
}

При активации wp плагина

array(2) {
  [2]=>
  array(3) {

деактивирую плагин, вновь активирую

array(2) {
  [3]=>
  array(5) {

и это происходит постоянно, в том числе и когда редактирую настройки плагина.

Получение данных из массива с помощью кода

echo $arr['2']['title']; 
echo $arr['2']['name'];
title = $arr['2']['title'];
name = $arr['2']['name'];
echo $title; 
echo $name;

становится не возможным.

Notice: Undefined offset: 2 in

Как получать данные из массива так, чтобы не править постоянно код?

echo $arr['2']['title']; 
echo $arr['2']['name'];
title = $arr['2']['title'];
name = $arr['2']['name'];
echo $title; 
echo $name;
Answer 1

Если ваша задача в том, чтобы получить первый элемент массива вне зависимости от того, какой там числовой индекс, воспользуйтесь функцией current().

$cfg = current($arr);
echo $cfg['title'];
Answer 2

Определяем ключ программно:

$key = null;
foreach ($arr as $k => $v) {
    if($k != "_multiwidget"){
        $key = $k;
    }
}
echo $arr[$key]['title']; 
echo $arr[$key]['name'];
$title = $arr[$key]['title'];
$name = $arr[$key]['name'];
echo $title; 
echo $name;
READ ALSO
Как переделать hasOne() на hasMany() в примере?

Как переделать hasOne() на hasMany() в примере?

Как переделать данный пример используя hasMany() вместо hasOne() для отображения в ячейке GridView нескольких связанных данных из другой таблицы?

169
Call to a member function getImage() on null

Call to a member function getImage() on null

Подскажите пожалуйста где ошибка

201
Как восстановить приложение?

Как восстановить приложение?

Работаю на linux, делаю приложение на yii2-advanced, локальный сервер apache2

161