banner



How To Create Array In Php

Read Time: 12 mins Languages:

In this tutorial, I am going to make a list of common PHP array functions, with examples of usage and best practices. Every PHP developer must know how to use them and how to combine array functions to make code readable and short.

Also, there is a presentation with given code examples, so you can download it from the related links and show it to your colleagues to build a stronger team.

The Basics

There are two different ways of creating arrays. One is to usearray() to specify the elements as key-value pairs. The other method is to put all elements inside[]. There are two important points that you should remember when creating associate arrays with key pairs.

First, the key always has to be unique. If you try to use the same key multiple times in an array, PHP will ignore all other key-value pairs except the last one. Second, if a key is created as floats, bools, and valid string representations of integers, then it will be cast to integers.

Here are a few examples of creating arrays in PHP:

$first = array(10, "Apple", 20, -18, "Monkey"); print_r($first); /* Array (     [0] => 10     [1] => Apple     [2] => 20     [3] => -18     [4] => Monkey ) */  $second = [10, "Apple", 20, -18, "Monkey"]; print_r($second); /* Array (     [0] => 10     [1] => Apple     [2] => 20     [3] => -18     [4] => Monkey ) */  $third = [10, 5 => "Apple", 2 => 20, -18, "Monkey"]; print_r($third); /* Array (     [0] => 10     [5] => Apple     [2] => 20     [6] => -18     [7] => Monkey ) */

As you can see, using either array() or[] is equivalent when creating arrays. The shorthand notation has been available starting from PHP 5.4.

You also don't need to specify a key for every array value. When left out, PHP sets the key to one more than the largest specified integer key. All automatically assigned keys will be greater than or equal to 0.

Working With Keys and Values

Let's start with the basic functions that work with array keys and values. One of them isarray_combine(), which creates an array using one array for keys and another for its values:

$keys = ['sky', 'grass', 'orange']; $values = ['blue', 'green', 'orange'];  $array = array_combine($keys, $values); print_r($array);  // Array // ( //     [sky] => blue //     [grass] => green //     [orange] => orange // )        

You should know that the array_values() function returns an indexed array of values,array_keys() returns an array of keys of a given array, andarray_flip() exchanges keys with values:

print_r(array_keys($array)); // ['sky', 'grass', 'orange'] print_r(array_values($array)); // ['blue', 'green', 'orange'] print_r(array_flip($array));  // Array // ( //     [blue] => sky //     [green] => grass //     [orange] => orange // )

You can check if an array contains a specific value and get its first corresponding key using thearray_search() function. You can also usein_array() if you just want to know whether an array contains a specific element and are not interested in its position. Consider using thearray_key_exists() function when you want to check if the array uses a given key.

$values = ["Apples", "Bananas", "Mangoes", "100", "200"];  if(in_array(100, $values)) {     echo '100 is one of the values'; } // 100 is one of the values  if(in_array(200, $values) !== false) {     echo '200 is not one of the values'; } // 200 is not one of the values  $values = ["Apples", "Bananas", "Mangoes", "100", "200", 100];  echo array_search(100, $values); // 3  echo array_search(100, $values, true); // 5  $values = ["Apples" => 100, "Bananas" => 10, "Mangoes" => 45];  if(array_key_exists("Apples", $values)) {     echo 'We have apples.'; } // We have apples.        

As the example above shows, make sure you use strict type checking if you don't want any unexpected results.

If you want to look up multiple elements in an array, it's usually faster to check if it contains a particular value by first flipping the array witharray_flip() and then usingarray_key_exists().

Make Your Code Shorter

The list() function, which is not really a function but a language construction, is designed to assign variables in a short way. For example, here's a basic example of using thelist() function:

// define array $array = ['a', 'b', 'c'];  // without list() $a = $array[0]; $b = $array[1]; $c = $array[2];  // with list() list($a, $b, $c) = $array;

This construction works perfectly with functions likepreg_slit() orexplode() . Also, you can skip some parameters if you don't need them to be defined:

$string = 'hello|wild|world'; list($hello, , $world) = explode('|', $string); echo("$hello, $world"); // hello, world

Also,list() can be used withforeach, which makes this construction even better:

$arrays = [[1, 2], [3, 4], [5, 6]];  foreach ($arrays as list($a, $b)) {     $c = $a + $b;     echo($c . ', '); // 3, 7, 11,  }

With theextract() function, you can export an associative array to variables. For every element of an array, a variable will be created with the name of a key and value as a value of the element:

$array = [     'clothes' => 't-shirt',     'size'    => 'medium',     'color'   => 'blue', ];  extract($array);  echo("$clothes $size $color"); // t-shirt medium blue

Be aware thatextract() is not safe if you are working with user data (like results of requests), so it's better to use this function with the flagsEXTR_IF_EXISTS andEXTR_PREFIX_ALL.

The opposite of the previous function is thecompact() function, which makes an associative array from variables:

$clothes = 't-shirt'; $size = 'medium'; $color = 'blue';  $array = compact('clothes', 'size', 'color'); print_r($array);  // Array // ( //     [clothes] => t-shirt //     [size] => medium //     [color] => blue // )

Filtering Functions

There is a great function for array filtering, and it is calledarray_filter(). Pass the array as the first param and an anonymous function as the second param. Returntrue in a callback function if you want to leave this element in the array, andfalse if you don't:

$numbers = [20, -3, 50, -99, 55];  $positive = array_filter($numbers, function($number) {     return $number > 0; });  print_r($positive); // [0 => 20, 2 => 50, 4 => 55]        

There is a way to filter not only by the values. You can useARRAY_FILTER_USE_KEY orARRAY_FILTER_USE_BOTH as a third parameter to pass the key or both value and key to the callback function.

Also, you can callarray_filter() without a callback to remove all empty values:

$numbers = [-1, 0, 1];  $not_empty = array_filter($numbers);  print_r($not_empty); // [0 => -1, 2 => 1]

You can get only unique values from an array using thearray_unique() function. Notice that the function will preserve the keys of the first unique elements:

$array = [1, 1, 1, 1, 2, 2, 2, 3, 4, 5, 5]; $uniques = array_unique($array);  print_r($uniques);  // Array // ( //     [0] => 1 //     [4] => 2 //     [7] => 3 //     [8] => 4 //     [9] => 5 // )        

Witharray_column(), you can get a list of column values from a multi-dimensional array, like an answer from a SQL database or an import from a CSV file. Just pass an array and column name:

$array = [     ['id' => 1, 'title' => 'tree'],     ['id' => 2, 'title' => 'sun'],     ['id' => 3, 'title' => 'cloud'], ];  $ids = array_column($array, 'id');  print_r($ids); // [1, 2, 3]        

Starting from PHP 7,array_column() becomes even more powerful, because it is now allowed to work with an array of objects. So working with an array of models just became easier:

$cinemas = Cinema::find()->all(); $cinema_ids = array_column($cinemas, 'id'); // php7 forever!

Walking Through the Arrays

Usingarray_map(), you can apply a callback to every element of an array. You can pass a function name or anonymous function to get a new array based on the given array:

$cities = ['Berlin', 'KYIV', 'Amsterdam', 'Riga']; $aliases = array_map('strtolower', $cities);  print_r($aliases); // ['berlin', 'kyiv, 'amsterdam', 'riga']  $numbers = [1, -2, 3, -4, 5]; $squares = array_map(function($number) {     return $number ** 2; }, $numbers);  print_r($squares);  // [1, 4, 9, 16, 25]

There is a myth that there is no way to pass values and keys of an array to a callback, but we can bust it:

$model = ['id' => 7, 'name'=>'James'];  $callback = function($key, $value) {     return "$key is $value"; };  $res = array_map($callback, array_keys($model), $model); print_r($res);  // Array // ( //     [0] => id is 7 //     [1] => name is James // )

But this looks dirty. It is better to usearray_walk() instead. This function looks the same asarray_map(), but it works differently. First of all, an array is passed using a reference, soarray_walk() doesn't create a new array, but changes a given array. So as a source array, you can pass the array value using a reference in a callback. Array keys can also be passed easily:

$fruits = [     'banana' => 'yellow',     'apple' => 'green',     'orange' => 'orange', ];  array_walk($fruits, function(&$value, $key) {     $value = "$key is $value"; });  print_r($fruits);  // Array // ( //     [banana] => banana is yellow //     [apple] => apple is green //     [orange] => orange is orange // )

Joining the Arrays

The best way to merge two or more arrays in PHP is to use thearray_merge() function. Items of arrays will be merged together, and values with the same string keys will be overwritten with the last value:

$array1 = ['a' => 'a', 'b' => 'b', 'c' => 'c']; $array2 = ['a' => 'A', 'b' => 'B', 'D' => 'D'];  $merge = array_merge($array1, $array2); print_r($merge); // Array // ( //     [a] => A //     [b] => B //     [c] => c //     [D] => D // )        

To remove array values from another array (or arrays), usearray_diff(). To get values which are present in given arrays, usearray_intersect(). The next examples will show how it works:

$array1 = [1, 2, 3, 4]; $array2 =       [3, 4, 5, 6];  $diff = array_diff($array1, $array2); print_r($diff); // [0 => 1, 1 => 2]  $intersect = array_intersect($array1, $array2); print_r($intersect);  // [2 => 3, 3 => 4]

Do the Math With Array Values

Usearray_sum() to get a sum of array values,array_product() to multiply them, or create your own formula witharray_reduce():

$numbers = [1, 2, 3, 4, 5];  echo(array_sum($numbers)); // 15 echo(array_product($numbers)); // 120  echo(array_reduce($numbers, function($carry, $item) {     return $carry ? $carry / $item : 1; })); // 0.0083 = 1/2/3/4/5        

To count all the values of an array, usearray_count_values(). It will give all unique values of a given array as keys and a count of these values as a value:

$things = ['apple', 'apple', 'banana', 'tree', 'tree', 'tree']; $values = array_count_values($things);  print_r($values);  // Array // ( //     [apple] => 2 //     [banana] => 1 //     [tree] => 3 // )

Generating Arrays

To generate an array with a given size and the same value, usearray_fill():

$bind = array_fill(0, 5, '?'); print_r($bind); // ['?', '?', '?', '?', '?']        

To generate an array with a range of keys and values, like hours in the day or letters, use range():

$letters = range('a', 'z'); print_r($letters); // ['a', 'b', ..., 'z']  $hours = range(0, 23); print_r($hours); // [0, 1, 2, ..., 23]

To get a part of an array—for example, just the first three elements—usearray_slice():

$numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; $top = array_slice($numbers, 0, 3); print_r($top); // [1, 2, 3]

If you ever want to generate an associative array with different keys and the same value assigned to each key, you can simply use thearray_fill_keys() function.

$keys = ["Apples", "Bananas", "Mangoes"]; $fruit_count = array_fill_keys($keys, 100);  print_r($fruit_count);  /* Array (     [Apples] => 100     [Bananas] => 100     [Mangoes] => 100 ) */

Sorting Arrays

It is good to remember that every sorting function in PHP works with arrays by a reference and returnstrue on success orfalse on failure. There's a basic sorting function calledsort(), and it sorts values in ascending order without preserving keys. The sorting function can be prepended by the following letters:

  • a, sort preserving keys
  • k, sort by keys
  • r, sort in reverse/descending order
  • u, sort with a user function

You can see the combinations of these letters in the following table:


a k r u
a asort()
arsort() uasort()
k
ksort() krsort()
r arsort() krsort() rsort()
u uasort()

usort()

Combining Array Functions Like a Boss

The real magic begins when you start to combine array functions. Here is how you can trim and remove empty values in just a single line of code witharray_filter() andarray_map():

$values = ['say  ', '  bye', ' ', ' to', ' spaces ', '   '];  $words = array_filter(array_map('trim', $values)); print_r($words); // ['say', 'bye', 'to', 'spaces']

To create an id to a title map from an array of models, we can use a combination ofarray_combine() andarray_column():

$models = [$model1, $model2, $model3];  $id_to_title = array_combine(     array_column($models, 'id'),     array_column($models, 'title') );

To get the top three values of an array, we can usearray_count_values(),arsort(), andarray_slice():

$letters = ['a', 'a', 'a', 'a', 'b', 'b', 'c', 'd', 'd', 'd', 'd', 'd'];  $values = array_count_values($letters); // get key to count array arsort($values); // sort descending preserving key $top = array_slice($values, 0, 3); // get top 3  print_r($top); // Array // ( //     [d] => 5 //     [a] => 4 //     [b] => 2 // )

It's easy to usearray_sum() andarray_map() to calculate the sum of order in a few rows:

$order = [     ['product_id' => 1, 'price' => 99, 'count' => 1],     ['product_id' => 2, 'price' => 50, 'count' => 2],     ['product_id' => 2, 'price' => 17, 'count' => 3], ];  $sum = array_sum(array_map(function($product_row) {     return $product_row['price'] * $product_row['count']; }, $order));  print_r($sum); // 250

Conclusion

As you can see, knowledge of the main array functions can make your code much shorter and more readable. Of course, PHP has many more array functions, and even the given functions have many variations to use with extra parameters and flags, but I think that in this tutorial we've covered the basics that every PHP developer should know.

Learn PHP With a Free Online Course

If you want to learn PHP, check out our free online course on PHP fundamentals!

In this course, you'll learn the fundamentals of PHP programming. You'll start with the basics, learning how PHP works and writing simple PHP loops and functions. Then you'll build up to coding classes for simple object-oriented programming (OOP). Along the way, you'll learn all the most important skills for writing apps for the web: you'll get a chance to practice responding to GET and POST requests, parsing JSON, authenticating users, and using a MySQL database.

How To Create Array In Php

Source: https://code.tutsplus.com/tutorials/working-with-php-arrays-in-the-right-way--cms-28606

Posted by: jolleycapecontabir.blogspot.com

0 Response to "How To Create Array In Php"

Post a Comment

Iklan Atas Artikel

Iklan Tengah Artikel 1

Iklan Tengah Artikel 2

Iklan Bawah Artikel