iT邦幫忙

2021 iThome 鐵人賽

DAY 6
0
自我挑戰組

PHP 與 Laravel 雜記系列 第 6

PHP array 相關函數

PHP array 相關函數

<?php
/*
array_reverse(array $array, bool $preserve_keys = false): array
return value: 一個順序相反的 array
Parameters: $array 要翻轉的 array, $preserve_keys 非數字 key 不影響, 設為 true 數字鍵保留
*/
$fruits = ['apples', 'oranges', 'pears'];
$fruitsReversed = array_reverse($fruits); // ['pears', 'oranges', 'apples']
print_r($fruits);
print_r($fruitsReversed);

/*
array_key_first(array $array): int|string|null
return value: 得到第一個 key
*/
$namesAssoc = ['first_name' => 'Peter','last_name' => 'Fisher'];
$keyAssoc = array_key_first($nameAssoc);  // 'first_name
var_dump($keyAssoc);

/*
array_key_last(array $array): int|string|null
return value: 得到第一個 key
*/
$namesAssoc = ['first_name' => 'Peter','last_name' => 'Fisher'];
$keyAssoc = array_key_last($nameAssoc);  // 'last_name
var_dump($keyAssoc);

/*
array_keys(array $array, mixed $search_value, bool $strict = false): array
return value: 所有 keys 組成的 array
parameters: $search 如果有指定, 只回傳該值的 keys, $strict 比對時是否嚴格比較
*/
$items = ['blue', 'green', 'black', 'red', 'blue', 1, '1', true];
$itemKeys = array_keys($items, '1', true);  // [0 => 6]
print_r($itemKeys);

/*
is_array(mixed $value): bool 判斷 $value 是否為 array

range(string|int|float $start, string|int|float $end, int|float $step = 1): array
range(1, 10, 2) 回傳 [1,3,5,7,9]
range('a', 'd') 回傳 ['a', 'b', 'c', 'd']
*/

/*
shuffle(array &$array): bool
執行成功, 回傳 true, 執行失敗, 回傳 false
將 $array 打亂
*/
$basket = range(1, 25);
print_r($basket);
shuffle($basket);
print_r($basket);

/*
array_count_values(array $array): array
回傳 一個數組, key 是 $array 裡元素的 value, value 是 $array 元素的值出現的次數 
*/
$orderItems = ['shoes', 'coat', 'shoes', 'socks'];
array_count_values($orderItems);   // ['shoes' => 2, 'coat' => 1, 'socks' => 1]

/*
array_flip(array $array): array
回傳一個 array, 是 $array 的 key 與 value 對調, 如果本來的 value 出現多次, 則以最後出現為主
*/
$basket = ['socks', 'jeans', 'shoes', 'socks'];
array_flip($basket); // ['socks' => 3, 'jeans' => 1, 'shoes' => 2]

/*
count(Countable|array $value, int $mode = COUNT_NORMAL): int
回傳 $value 元素個數
$mode: 如果設定為 COUNT_RECURSIVE(或1), 會遞迴方式計算
*/
$items = [
  'food' => 'sugur',
  'drink' => 'water',
  'websites' => [
    'http://google.com',
    'https://google.com'
  ],
  'tutorials' => [
    'php' => [
      'PHP for beginners'
    ],
    'docker' => [
      'docker in motion'
    ],
    'python' => [
      'Hands on with Microservices with python',
      'Masther Python Clean Coding'
    ]
  ]
];
print count($items);  // 4 
print count($items, COUNT_RECURSIVE); // 13

/*
array_replace(array $array, array ...$replacements): array
回傳替換後的 array
$array 要被替換的 array
*/
$order = [
  'drink' => 'cock',
  'main_meal' => 'steak',
  'side_plate' => 'salad'
];
$alterOrder1 = array_replace($order, ['drink' => 'bear']);
$alterOrder2 = array_replace($order, ['drink' => 'bear'], ['drink' => 'whisky']);
$alterOrder3 = array_replace($order, ['drink' => 'bear'], ['drink' => 'whisky'], ['dessert' => 'cake');
print_r($order);
print_r($alterOrder1);
print_r($alterOrder2);
print_r($alterOrder3);

/*
key_exists(string|int $key, array $array): bool
*/
$heroes = ['Iron Man', 'Hulk', 'Black Widow', 'Rogue'];
$doesExist = key_exists(0, $heroes);

上一篇
PHP 一些特性
下一篇
PHP 正則相關函數
系列文
PHP 與 Laravel 雜記14

尚未有邦友留言

立即登入留言