|
compact
Create array containing variables and their values
(PHP 4, PHP 5)
Example 298. compact() example<?php The above example will output: Array Code Examples / Notes » compactmijllirg
You might could think of it as ${$var}. So, if you variable is not accessible with the ${$var} it will not working with this function. Examples being inside of function or class where you variable is not present. <?php $foo = 'bar'; function blah() { // this will no work since the $foo is not in scope $somthin = compact('foo'); // you get empty array } ?> PS: Sorry for my poor english... pillepop2003
Use the following piece of code if you want to insert a value into an array at a path that is extracted from a string. Example: You have a syntax like 'a|b|c|d' which represents the array structure, and you want to insert a value X into the array at the position $array['a']['b']['c']['d'] = X. <? function array_path_insert(&$array, $path, $value) { $path_el = split('\|', $path); $arr_ref =& $array; for($i = 0; $i < sizeof($path_el); $i++) { $arr_ref =& $arr_ref[$path_el[$i]]; } $arr_ref = $value; } $array['a']['b']['f'] = 4; $path = 'a|b|d|e'; $value = 'hallo'; array_path_insert($array, $path, $value); /* var_dump($array) returns: array(1) { ["a"]=> &array(1) { ["b"]=> &array(2) { ["f"]=> int(4) ["d"]=> &array(1) { ["e"]=> string(5) "hallo" } } } */ ?> Rock on Philipp hericklr
The compact function doesn't work inside the classes or functions. I think its escope is local... Above it is a code to help about it. Comments & Suggestions are welcome. PS: Sorry for my poor english... <?php function x_compact() { if(func_num_args()==0) { return false; } $m=array(); function attach($val) { global $m; if((!is_numeric($val)) && array_key_exists($val,$GLOBALS)) { $m[$val]=$GLOBALS[$val];} } function sub($par) { global $m; if(is_array($par)) { foreach($par as $cel) { if(is_array($cel)) { sub($cel); } else { attach($cel); } } } else { attach($par); } return $m; } for($i=0;$i<func_num_args();$i++) { $arg=func_get_arg($i); sub($arg); } return sub($arg); } ?> rlynch
It should be noted that PHP will simply skip any strings that are not set: <?php $foo = 4; $bar = 3; $result = compact('foo', 'bar', 'baz'); ?> will result in: ('foo' => 4, 'bar' => 3) 'baz' is simply ignored. m spreij
Can also handy for debugging, to quickly show a bunch of variables and their values: <?php print_r(compact(explode(' ', 'count acw cols coldepth'))); ?> gives Array ( [count] => 70 [acw] => 9 [cols] => 7 [coldepth] => 10 ) |
Change Languagearray_change_key_case array_chunk array_combine array_count_values array_diff_assoc array_diff_key array_diff_uassoc array_diff_ukey array_diff array_fill_keys array_fill array_filter array_flip array_intersect_assoc array_intersect_key array_intersect_uassoc array_intersect_ukey array_intersect array_key_exists array_keys array_map array_merge_recursive array_merge array_multisort array_pad array_pop array_product array_push array_rand array_reduce array_reverse array_search array_shift array_slice array_splice array_sum array_udiff_assoc array_udiff_uassoc array_udiff array_uintersect_assoc array_uintersect_uassoc array_uintersect array_unique array_unshift array_values array_walk_recursive array_walk array arsort asort compact count current each end extract in_array key krsort ksort list natcasesort natsort next pos prev range reset rsort shuffle sizeof sort uasort uksort usort |