This single line would do that:
$array = array_column($array, 'plan');
The first argument is an array | The second argument is an array key.
For details, go to official documentation: https://www.php.net/manual/en/function.array-column.php.
Answer from Usman Ahmed on Stack OverflowThis single line would do that:
$array = array_column($array, 'plan');
The first argument is an array | The second argument is an array key.
For details, go to official documentation: https://www.php.net/manual/en/function.array-column.php.
Assuming this array may or may not be redundantly nested and you're unsure of how deep it goes, this should flatten it for you:
function array_flatten($array) {
if (!is_array($array)) {
return FALSE;
}
$result = array();
foreach ($array as
value) {
if (is_array($value)) {
$result = array_merge($result, array_flatten($value));
}
else {
$result[
value;
}
}
return $result;
}
You can try
$it = new RecursiveIteratorIterator(new RecursiveArrayIterator($data));
$l = iterator_to_array($it, false);
var_dump($l); // one Dimensional
Try with:
$input = array(/* your array*/);
$output = array();
foreach ( $input as $data ) {
$output = array_merge($output, $data);
}
$final_array =array();
foreach ($data as $val)
{
foreach($val as $val2)
{
$final_array[] = $val2;
}
}
function makeArray($finalArray,$element) {
foreach ($element as $key => $value){
if(is_array($value)) makeArray($finalArray,$value);
else $finalArray[] = $value;
}
}
If you want a "general-pourpose" solution, this is the one
Obviously you have to call it, the first time, with $finalArray as an empty Array and $element as your starting array
Even simplier (but for php5.5 and php7):
$numery = array_column(
$command->queryAll(),
'phone_number'
);
Use below loop to get desired result
$numery = $command->queryAll();
$number_arr = array();
foreach($numery as $number)
{
array_push($number_arr,$number['phone_number']);
}
print_r($number_arr);
PHP have a nice function for this case: array_walk_recursive:
// your multi-dimensional-array
$array = [
'item1' => 'value1',
'item2' => 'value2',
'item3' => [
'item3a' => 'value3',
],
'item4' => [
[
'item4a' => [
'value4',
'value5',
],
]
]
];
array_walk_recursive($array, function($a) use (&$new) { $new[] = $a; });
print_r($new);
output
Array
(
[0] => value1
[1] => value2
[2] => value3
[3] => value4
[4] => value5
)
You can use recusice function to convert multidimensional arrays to single array.
function filter($array)
{
static $newArray;
if (is_array($array)):
array_map('filter', $array);
else:
$newArray[] = $array;
endif;
return $newArray;
}
$array = [
'isim' => 'Şahin',
'soyisim' => 'ERSEVER',
'yabanci_dil' => [
'tr' => 'Türkçe',
],
'languages' => [
[
'php' => [
'codeigniter',
'laravel',
'symfony'
],
'javascript' => [
'vuejs',
'react' => [
'react',
'react-native'
]
]
]
]
];
print_r(filter($array));
Result:
Array
(
[0] => Şahin
[1] => ERSEVER
[2] => Türkçe
[3] => codeigniter
[4] => laravel
[5] => symfony
[6] => vuejs
[7] => react
[8] => react-native
)
I think you can use array_reduce() function. For example:
$multi= array(0 => array('t1' => 'test1'),1 => array('t2' => 'test2'),2 => array('t3' => 'test3'),3 => array('t4' => 'test4'));
$single= array_reduce($multi, 'array_merge', array());
print_r($single); //Outputs the reduced aray
You can use as follows :
$newArray = array();
foreach($arrayData as $key => $value) {
foreach($value as $key2 => $value2) {
$newArray[$key2] = $value2;
}
}
Where $arrayData is your DB data array and $newArray will be the result.
For your limited use case, this'll do it:
$oneDimensionalArray = array_map('current', $twoDimensionalArray);
This can be more generalized for when the subarrays have many entries to this:
$oneDimensionalArray = call_user_func_array('array_merge', $twoDimensionalArray);
The PHP array_mergeDocs function can flatten your array:
$flat = call_user_func_array('array_merge', $array);
In case the original array has a higher depth than 2 levels, the SPL in PHP has a RecursiveArrayIterator you can use to flatten it:
$flat = iterator_to_array(new RecursiveIteratorIterator(new RecursiveArrayIterator($array)), 0);
See as well: Turning multidimensional array into one-dimensional array
array_reduce($array, 'array_merge', array())
Example:
$a = array(array(1, 2, 3), array(4, 5, 6));
$result = array_reduce($a, 'array_merge', array());
Result:
array[1, 2, 3, 4, 5, 6];
The PHP array_mergeDocs function can flatten your array:
$flat = call_user_func_array('array_merge', $array);
In case the original array has a higher depth than 2 levels, the SPL in PHP has a RecursiveArrayIterator you can use to flatten it:
$flat = iterator_to_array(new RecursiveIteratorIterator(new RecursiveArrayIterator($array)), 0);
See as well: How to Flatten a Multidimensional Array?.
There are many ways to do it,Try this way simply
$result = call_user_func_array('array_merge', $array);
echo "<pre>";
print_r($result);
echo "</pre>";
It appears my code was working properly, but instead of passing back in a value split from an array, I was re-passing back in the array.
Example :
$newArray[] = $array;
instead of
$newArray[] = $array[1];
Stupid mistake on my end.