I'd like to transform input array from:
array(1) {
["option"]=>
array(2) {
[0]=>
string(8) "fdfsafsd"
[1]=>
string(7) "dasdasd"
...
}
}
to
array(array('option' => "fdfsafsd"), array('option' => "dasdasd"),...)
The key "option" can be whatever...
What would be the best practice?
Thanks!
Best practice would be to leave your array as it is. If you want to "transform" it, you need to assign new keys for values found in the "options" key.
$new_array = $old_array['options'];
That would get what you specified in your question, however I don't see why you'd do that in the first place.
you want to have an associative array with all the value on one key ???
That seems impossible because an associative array is one key => one Value.
so you probably want an array list, you can obtain it easely by:
$myArray = $originalArray['option']
which will be like that:
array("fdfsafsd", "dasdasd",...)
Related
I've got a MySQL search query outputting to an array:
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
What I'd like to be able to is add further keys/values to each array item.
So at the moment it outputs:
array(1) {
[0]=>
array(7) {
["organisation"]=>
string(32) "7a5fddaceecec75c9a13cb329f6b4b15"
["date_created"]=>
string(10) "2017-08-04"
}
}
I'd like it also to include this on the end of the array:
'name' => getName($result['name'];
I assume I do that with array_push and a while loop? I just can't figure out how.
Thanks
If you're going to use array_push() to insert a "$key" => "$value" pair into an array, it can be done using the following:
$data[$key] = $value;
It is not necessary to use array_push.
I have an array like this:
array(2) {
[0]=> array(1) { ["cate_id"]=> string(2) "14" }
[1]=> array(1) { ["cate_id"]=> string(2) "15" }
}
How can I check if the value 14 exists in the array without using a for loop?
I've tried this code:
var_dump(in_array('14',$categoriesId));exit;
but it returns false, and I do not know why.
I wonder why you don't need a for. Well a quickest way would be to serialize your array and do a strpos.
$yourarray = array('200','3012','14');
if(strpos(serialize($yourarray),14)!==false)
{
echo "value exists";
}
Warning : Without using looping structures you cannot guarantee the value existence inside an array. Even an in_array uses internal looping structures. So as the comments indicate you will get a false positive if there is 1414 inside the $yourarray variable. That's why I made it a point in the first place.
If you need to find a specific value in an array. You have to loop it.
Do this :
var_dump(in_array("14",array_map('current',$categoriesId))); //returns true
I'm creating an array from a database and its being created correctly as seen below.
array(2) {
["members"]=> bool(true)
["maps"]=> bool(true)
}
The issue is when I output the array using key:value the key is outputting the element number for example 0 for 'members and 1 for 'maps'.
foreach($vPrivileges as $vKey => $vValue) {
echo "$vKey: $vValue";
}
I need to output the actual name of the element and the value, I've spent awhile looking online and trying out some code samples but haven't been able to find a solution, any help is greatly appreciated.
Also I noticed that if I take the array and use the sort() function on it, it sorts as expected with one exception that it renames all the array elements to 0, 1 etc.
array(2) {
[0]=> bool(true)
[1]=> bool(true)
}
Use asort instead of sort to preserve array keys. This will fix your problem (assuming you call sort before the foreach-loop).
I have a multidimensional array ($array) in which the entries look like:
{ ["upload/example.gif"]=> array(5) {
["title"]=> string(12) "This is me"
["excerpt"]=> string(24) "This is a photo of a tree"
["img"]=> string(42) "upload/example.gif"
["link"]=> string(23) "http://www.google.co.uk"
["source"]=> string(6) "custom"
}
}
I need to be able to remove any duplicate values in $array based on the key. So if my array was:
$array = array( ["upload/example.gif"] => etc....
["upload/tree.gif"] => etc....
["upload/example.gif"] => etc....)
I would be able to remove one of the ["upload/example.gif"] => etc.... arrays.
I have tried:
$array = array_map('unserialize', array_unique(array_map('serialize', $array)));
but that didn't work.
Thanks in advance.
netcoder answered the question properly, I just wanted it to show up in the answer box (instead of comment).
You can't have duplicate keys in an associative array (or any array). By nature of it being an array you can be gauranteed to have unique keys.
BTW if you find duplicate data in different keys you can remove the redundant key by unsetting it.
unset($array['delete_me']);
http://php.net/manual/en/function.unset.php
update
how can I retrieve this value? I need to do that if I will write the value to my database.
array(3) {
[1]=> NULL
[2]=> array(2) {
[123]=>
int(123)
[122]=>
int(0)
}
[3]=> NULL
}
There is something missing in your output. I assume it looks something like:
// var_dump($array);
array(1) {
[0]=>
string(2) "39"
}
so you can access the value with $array[0]. Simple array access.
As arrays are the most important data structure in PHP, you should learn how to deal with them.
Read PHP: Arrays.
Update:
Regarding your update, which value do you want? You have a multidimensional array. This is what you will get:
$array[1] // gives null
$array[2] // gives an array
$array[2][123] // gives the integer 123
$array[2][122] // gives the integer 0
$array[3] // gives null
Maybe you also want (have) to loop over the inner array to get all values:
foreach($array[2] as $key => $value) {
// do something with $key and $value
}
As I said, read the documentation, it contains everything you need to know. Accessing arrays in PHP is not much different than in other programming languages.
The PHP manual contains a lot of examples, it is a pretty could documentation. Use it!
If your array is referenced as $myArray, you can get the string 39 via $myArray[0], i.e., this zeroth item.