Yii2-助手類(ArrayHelper)

胡勇健發表於2024-03-30

Yii2-助手類(ArrayHelper)

陣列助手類 ArrayHelper

Yii 陣列助手類提供了額外的靜態方法,讓你更高效的處理陣列。

模型轉陣列

Yii2-助手類(ArrayHelper)
$model = Country::findOne(['code'=>'BR']);
VarDumper::dump(ArrayHelper::toArray($model));  //[ 'code' => 'BR' 'name' => 'Brazil' 'population' => 170115000 ]

獲取值(getValue)

Yii2-助手類(ArrayHelper)
class User
{
  public $name = 'Alex';
}
$array = [
  'foo' => [
    'bar' => new User(),ddd
  ]
]

獲取 name 的值

PHP 方法:

Yii2-助手類(ArrayHelper)
$value = isset($array['foo']['bar']->name) ? $array['foo']['name'] : null;

ArrayHelper 方法:

Yii2-助手類(ArrayHelper)
$value = ArrayHelper::getValue($array,'foo.bar.name');

獲取列(getColumn)

從多維陣列或者物件陣列中獲取某列的值

Yii2-助手類(ArrayHelper)
$data = [
  ['id' => '123','data' => 'abc'], // key 相當於物件的屬性名,value 相當於物件的屬性值
  ['id' => '456','data' => 'def'],
]

ArrayHelper 方法:

Yii2-助手類(ArrayHelper)
$ids = ArrayHelper::getColumn($data,'id');
結果:['123','456'];

移除陣列指定key的項

Yii2-助手類(ArrayHelper)
$array = ['name'=>'xiaoming','age'=>23];
$r = ArrayHelper::remove($array,'name');
VarDumper::dump($array);

結果:['age'=>23]

移除指定值的項

Yii2-助手類(ArrayHelper)
$array = ['Bob' => 'Dylan', 'Michael' => 'Jackson', 'Mick' => 'Jagger', 'Janet' => 'Jackson'];
\yii\helpers\ArrayHelper::removeValue($array, 'Jackson');
VarDumper::dump($array);

結果:[ 'Bob' => 'Dylan' 'Mick' => 'Jagger' ]

根據指定的鍵對陣列進行索引或分組

Yii2-助手類(ArrayHelper)
$array = [
          ['id' => '123', 'data' => 'abc', 'device' => 'laptop'],
          ['id' => '345', 'data' => 'def', 'device' => 'tablet'],
          ['id' => '345', 'data' => 'hgi', 'device' => 'smartphone'],
      ];
//索引
$result = ArrayHelper::index($array, 'id');
VarDumper::dump($result);

//分組   
$result = ArrayHelper::index($array, null,'id');

//以id和device分組
$result = ArrayHelper::index($array, 'data', [function ($element) {return $element['id'];}, 'device']);
VarDumper::dump($result);

建立對映表(map)

可以使用 map 方法從一個多維陣列或者物件陣列中取出資料,建立一個對映表(鍵值對陣列), 在 map 方法的引數列表中指定了預構建的對映表的鍵名和值。

Yii2-助手類(ArrayHelper)
$array = [
['id'=>'123','name'=>'aaa','email'=>'x'],
['id'=>'456','name'=>'bbb','email'=>'y'],
['id'=>'789','name'=>'ccc','email'=>'z'],
]
Yii2-助手類(ArrayHelper)
// ArrayHelper 方法:
$result = ArrayHelper::map($array,'id','name');
/*
結果:
[
  '123' => 'aaa'
  '456' => 'bbb'
  '789' => 'ccc,
]
*/

轉HTML 實體

Yii2-助手類(ArrayHelper)
$array = ['html'=>"<script>console.log('test');</script>"];
$result = ArrayHelper::htmlEncode($array);

根據指定的key篩選陣列

Yii2-助手類(ArrayHelper)
$array = [
          'A' => [1, 2],
          'B' => [
              'C' => 1,
              'D' => 2,
          ],
          'E' => 1,
      ];
        $result = ArrayHelper::filter($array,['A','B']);

相關文章