26
Array Tips © [ ‘hip’, ‘hip’, ‘hip’ ] Benoit Viguier 28/10/2016 @b_viguier

Array Tipsb-viguier.github.io/downloads/talks/ForumPhp-Array-Tips.pdf · Filter by category_id $results = []; foreach ($data as $d){ if (in_array($d['category_id'], $category_ids)){

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Array Tipsb-viguier.github.io/downloads/talks/ForumPhp-Array-Tips.pdf · Filter by category_id $results = []; foreach ($data as $d){ if (in_array($d['category_id'], $category_ids)){

Array Tips©

[ ‘hip’, ‘hip’, ‘hip’ ]Benoit Viguier

28/10/2016@b_viguier

Page 2: Array Tipsb-viguier.github.io/downloads/talks/ForumPhp-Array-Tips.pdf · Filter by category_id $results = []; foreach ($data as $d){ if (in_array($d['category_id'], $category_ids)){

It’s about Arrays

#0

Page 3: Array Tipsb-viguier.github.io/downloads/talks/ForumPhp-Array-Tips.pdf · Filter by category_id $results = []; foreach ($data as $d){ if (in_array($d['category_id'], $category_ids)){

Vanilla Php#1

Page 4: Array Tipsb-viguier.github.io/downloads/talks/ForumPhp-Array-Tips.pdf · Filter by category_id $results = []; foreach ($data as $d){ if (in_array($d['category_id'], $category_ids)){

Functional Programming

#2

$ids = array_column( $data, 'id' );

$ids = []; foreach($data as $d){ $ids[] = $d['id']; }

Page 5: Array Tipsb-viguier.github.io/downloads/talks/ForumPhp-Array-Tips.pdf · Filter by category_id $results = []; foreach ($data as $d){ if (in_array($d['category_id'], $category_ids)){

No Anonymous Functions

#3

$offset = 10; $ids = []; foreach($data as $d){ $ids[] = $d['id']+$offset; }

$offset = 10; $ids = array_map( function($d) use($offset){ return $d['id'] + 10; }, $data );

Page 6: Array Tipsb-viguier.github.io/downloads/talks/ForumPhp-Array-Tips.pdf · Filter by category_id $results = []; foreach ($data as $d){ if (in_array($d['category_id'], $category_ids)){

Mind Blown

#Bonus

Page 7: Array Tipsb-viguier.github.io/downloads/talks/ForumPhp-Array-Tips.pdf · Filter by category_id $results = []; foreach ($data as $d){ if (in_array($d['category_id'], $category_ids)){

ADVISORYPARENTAL

EXPLICIT PHP

Page 8: Array Tipsb-viguier.github.io/downloads/talks/ForumPhp-Array-Tips.pdf · Filter by category_id $results = []; foreach ($data as $d){ if (in_array($d['category_id'], $category_ids)){

Filter by category_idSample #1

Page 9: Array Tipsb-viguier.github.io/downloads/talks/ForumPhp-Array-Tips.pdf · Filter by category_id $results = []; foreach ($data as $d){ if (in_array($d['category_id'], $category_ids)){

Filter by category_id

$results = []; foreach ($data as $d){ if (in_array($d['category_id'], $category_ids)){ $results[] = $d; } }

Page 10: Array Tipsb-viguier.github.io/downloads/talks/ForumPhp-Array-Tips.pdf · Filter by category_id $results = []; foreach ($data as $d){ if (in_array($d['category_id'], $category_ids)){

array_intersect

array_intersect( array $array1, array $array2, array ...$arrayN ): array

Page 11: Array Tipsb-viguier.github.io/downloads/talks/ForumPhp-Array-Tips.pdf · Filter by category_id $results = []; foreach ($data as $d){ if (in_array($d['category_id'], $category_ids)){

Filter by category_id$results = array_intersect_key( $data, array_intersect( array_column($data, 'category_id'), $category_ids ) );

Page 12: Array Tipsb-viguier.github.io/downloads/talks/ForumPhp-Array-Tips.pdf · Filter by category_id $results = []; foreach ($data as $d){ if (in_array($d['category_id'], $category_ids)){

Filter by category_id$results = array_intersect_key( $data, array_intersect( array_column($data, 'category_id'), $category_ids ) );

Page 13: Array Tipsb-viguier.github.io/downloads/talks/ForumPhp-Array-Tips.pdf · Filter by category_id $results = []; foreach ($data as $d){ if (in_array($d['category_id'], $category_ids)){

Filter by category_id$results = array_intersect_key( $data, array_intersect( array_column($data, 'category_id'), $category_ids ) );

Page 14: Array Tipsb-viguier.github.io/downloads/talks/ForumPhp-Array-Tips.pdf · Filter by category_id $results = []; foreach ($data as $d){ if (in_array($d['category_id'], $category_ids)){

Filter by category_id$results = array_intersect_key( $data, array_intersect( array_column($data, 'category_id'), $category_ids ) );

Page 15: Array Tipsb-viguier.github.io/downloads/talks/ForumPhp-Array-Tips.pdf · Filter by category_id $results = []; foreach ($data as $d){ if (in_array($d['category_id'], $category_ids)){

Mixing arraysSample #2

Page 16: Array Tipsb-viguier.github.io/downloads/talks/ForumPhp-Array-Tips.pdf · Filter by category_id $results = []; foreach ($data as $d){ if (in_array($d['category_id'], $category_ids)){

Data$data = [ ['A1', 'A2', 'A3'], ['B1'], [], ['D1', 'D2', 'D3', 'D4'], // ... ]; // Expecting // ['A1','B1','D1','A2','D2','A3','D3','D4'];

Page 17: Array Tipsb-viguier.github.io/downloads/talks/ForumPhp-Array-Tips.pdf · Filter by category_id $results = []; foreach ($data as $d){ if (in_array($d['category_id'], $category_ids)){

Data$data = [ ['A1', 'A2', 'A3'], ['B1'], [], ['D1', 'D2', 'D3', 'D4'], // ... ]; // Expecting // ['A1','B1','D1','A2','D2','A3','D3','D4'];

Page 18: Array Tipsb-viguier.github.io/downloads/talks/ForumPhp-Array-Tips.pdf · Filter by category_id $results = []; foreach ($data as $d){ if (in_array($d['category_id'], $category_ids)){

Mixing arrays$result = []; do { $modified = false; foreach ($data as &$collection) { if (empty($collection)) { $result[] = array_shift($collection); $modified = true; } } } while ($modified);

Page 19: Array Tipsb-viguier.github.io/downloads/talks/ForumPhp-Array-Tips.pdf · Filter by category_id $results = []; foreach ($data as $d){ if (in_array($d['category_id'], $category_ids)){

array_map

array_map ( callable $callback, array $array1, array ...$arrayN ) : array

Page 20: Array Tipsb-viguier.github.io/downloads/talks/ForumPhp-Array-Tips.pdf · Filter by category_id $results = []; foreach ($data as $d){ if (in_array($d['category_id'], $category_ids)){

Mixing arrays$result = array_values( array_filter( array_merge( ...array_map(null, ...$data) ) ) );

Page 21: Array Tipsb-viguier.github.io/downloads/talks/ForumPhp-Array-Tips.pdf · Filter by category_id $results = []; foreach ($data as $d){ if (in_array($d['category_id'], $category_ids)){

Mixing arrays$result = array_values( array_filter( array_merge( ...array_map(null, ...$data) ) ) );

Page 22: Array Tipsb-viguier.github.io/downloads/talks/ForumPhp-Array-Tips.pdf · Filter by category_id $results = []; foreach ($data as $d){ if (in_array($d['category_id'], $category_ids)){

Mixing arrays$result = array_values( array_filter( array_merge( ...array_map(null, ...$data) ) ) );

Page 23: Array Tipsb-viguier.github.io/downloads/talks/ForumPhp-Array-Tips.pdf · Filter by category_id $results = []; foreach ($data as $d){ if (in_array($d['category_id'], $category_ids)){

Mixing arrays$result = array_values( array_filter( array_merge( ...array_map(null, ...$data) ) ) );

Page 24: Array Tipsb-viguier.github.io/downloads/talks/ForumPhp-Array-Tips.pdf · Filter by category_id $results = []; foreach ($data as $d){ if (in_array($d['category_id'], $category_ids)){

Mixing arrays$result = array_values( array_filter( array_merge( ...array_map(null, ...$data) ) ) );

Page 25: Array Tipsb-viguier.github.io/downloads/talks/ForumPhp-Array-Tips.pdf · Filter by category_id $results = []; foreach ($data as $d){ if (in_array($d['category_id'], $category_ids)){

Good or Bad ?¯\_( )_/¯

Page 26: Array Tipsb-viguier.github.io/downloads/talks/ForumPhp-Array-Tips.pdf · Filter by category_id $results = []; foreach ($data as $d){ if (in_array($d['category_id'], $category_ids)){

Thanks !@b_viguier