Add a prefix to each item of a PHP array
Simple:
foreach ($array as &$value) {
$value *= (-1);
}
unset($value);
Unless the array is a string:
foreach ($array as &$value) {
$value = '-' . $value;
}
unset($value);
How to add prefix to array value for each element in array?
You can manipulate the "name" index value according to your requirement like :
$arr = array (1 => array('name' => 'abc', 'age' =>25), 2 => array('name' => 'xyz', 'age' =>28));
foreach ($arr as $key => $val) {
$arr[$key]['name'] = 'Mr. '.$val['name'];
}
click on this link to see result
Regex to Add a postfix to each item of a PHP array
If you want to use preg_filter
with a regex for this, replace ^
with $
(the end of string) (or \z
- the very end of the string):
$array = ["a", "b", "c", "d", "f"];
$suffixed_array = preg_filter('/$/', '_M', $array);
print_r($suffixed_array);
See the PHP demo
A non-regex way is to use array_map
like this:
$suffixed_array = array_map(function ($s) {return $s . '_M';}, $array);
See this PHP demo.
PHP: Adding prefix strings to array values
In the case that you're using a PHP version >= 5.3:
$array = array('a', 'b', 'c');
array_walk($array, function(&$value, $key) { $value .= 'd'; } );
Is there a reliable PHP one liner to suffix/prefix array values?
$newelements = array_map(function($x){ return $x . ':hover'; }, $elements);
Fastest way to add prefix to array keys?
I've found that PHPBench is not a very good source for non-trivial benchmarks. So unless your actually interested in running for(....);
it's not going to correctly show which syntax will be faster. I've put together a simple benchmark to show that foreach is actually the fastest when your use both the key and value during the iteration.
It's very important to actually force PHP to read the values from a loop iteration, or else it'll do its best to optimize them out. In the example below I use the doNothing
function to force PHP to calculate the key and value each time. Using doNothing will cause an overhead to be applied to each loop, but it will be the same for each loop since the number of calls will be the same.
I wasn't really that surprised that foreach
came out on top since it's the language construct for iterating a dictionary.
$array = range( 0, 1000000 );
function doNothing( $value, $key ) {;}
$t1_start = microtime(true);
foreach( $array as $key => $value ) {
doNothing( $value, $key );
}
$t1_end = microtime(true);
$t2_start = microtime(true);
$array_size = count( $array );
for( $key = 0; $key < $array_size; $key++ ) {
doNothing( $array[$key], $key );
}
$t2_end = microtime(true);
//suggestion from PHPBench as the "fastest" way to iterate an array
$t3_start = microtime(true);
$key = array_keys($array);
$size = sizeOf($key);
for( $i=0; $i < $size; $i++ ) {
doNothing( $key[$i], $array[$key[$i]] );
}
$t3_end = microtime(true);
$t4_start = microtime(true);
array_walk( $array, "doNothing" );
$t4_end = microtime(true);
print
"Test 1 ".($t1_end - $t1_start)."\n". //Test 1 0.342370986938
"Test 2 ".($t2_end - $t2_start)."\n". //Test 2 0.369848966599
"Test 3 ".($t3_end - $t3_start)."\n". //Test 3 0.78616809845
"Test 4 ".($t4_end - $t4_start)."\n"; //Test 4 0.542922019958
Edit: I'm using PHP 5.3 on 64-bit Mac OSX 10.6
How to separate a php array items by prefix
This will give you results for more dynamic prefixs - first explode with the delimiter and then insert by the key to result array.
For separating the value you can use: extract
Consider the following code:
$data = array('status.1','status.2','status.3', 'country.244', 'country.24', 'country.845', 'pm.4','pm.9', 'pm.6');
$res = array();
foreach($data as $elem) {
list($key,$val) = explode(".", $elem, 2);
$res[$key][] = $val;
}
extract($res); // this will separate to var with the prefix name
echo "Status is: " . print_r($status); // will output array of ["1","2","3"]
This snippet took less the 0.001 second...
Thanks @mickmackusa for the simplification
How to add prefix to array value for each element in array?
You can manipulate the "name" index value according to your requirement like :
$arr = array (1 => array('name' => 'abc', 'age' =>25), 2 => array('name' => 'xyz', 'age' =>28));
foreach ($arr as $key => $val) {
$arr[$key]['name'] = 'Mr. '.$val['name'];
}
click on this link to see result
Adding prefix ' ' from my array tree
I think this should do it.
function pdf_content($items, $parentId = 0, $prefix = '>')
{
$str = '';
foreach ($items as $item)
{
if ($item['parent_id'] == $parentId) {
$str .= '<li>';
$str .= $prefix.$item['sku'];
$str .= pdf_content($items, $item['id'], $prefix.'>');
$str .= '</li>';
}
}
if ($str) {
$str = "<ol class='dashed'>" . $str . '</ol>';
}
return $str;
}
$string = pdf_content($array);
This is what I get as the Output -
>Parent
>>Parent 39
>>>Parent 40
>>>Parent 40
>>Parent 39
Related Topics
In PHP How to Clear a Wsdl Cache
How to Loop Through $_Files Array
Removing Last Comma from a Foreach Loop
Case Insensitive String Comparison
Using Array_Search for Multi Dimensional Array
Php: Get HTML Source Code with Curl
Deep Recursive Array of Directory Structure in PHP
Upload Multiple Files in Codeigniter
Joomla 3.2.1 Password Encryption
Select Entries Between Dates in Doctrine 2
File_Get_Contents() Give Me 403 Forbidden
Understanding Nested PHP Ternary Operator
Pdo MySQL: Insert Multiple Rows in One Query