unset not deleting key in multidimensional array - array-unset

I have multidimensional array and wants to remove delivery location where ever it exists
Array
(
[0] => Array
(
[amountReceived] => 1
[deliveryLocation] => germany
)
[1] => Array
(
[amountReceived] => 2
[deliveryLocation] => bulgaria
)
)
PHP
foreach ($arr as $val)
{
foreach($val as $k => $v)
{
if($k == 'deliveryLocation')
{
unset($arr[$k]);
}
}
}
return $arr;
problem is it's returning above array as it is without removing any key from it.

Easy and fast to understand way
$t=0;
foreach ($arr as $val)
{
unset($arr[$temp]['deliveryLocation']);
$t++;
}

Related

How to handle the result of a list of future with ReasonML?

I am trying to go over a list of items, cache the URL and then update the URL in the list before drawing it.
However I don't seems to be able to do so.
Any idea?
external cache: option(string) => Js.Promise.t({. "uri": string, "filePath": string }) = "get";
let items = result##data##data->Option.getWithDefault([||]);
let cachedUri = items
->Belt.Array.map(
item =>
cache(item##hosted_video_url)
->FutureJs.fromPromise(Js.String.make)
->Future.flatMapOk(cachedObj => (
{. "hosted_video_url": cachedObj##uri }
)
))
->Belt.Array.toList
->Future.all;
The idea is that you cannot exit a future, so you need to update the state inside the future thing rather than trying to get an equivalent of an asyncio.gather or something similar.
I changed:
setVerticalData(_ => {items-> Js.Array2.sortInPlaceWith((a, b) => {...})});
with
items
->List.fromArray;
->List.map(item =>
cache(item##hosted_video_url)
->FutureJs.fromPromise(Js.String.make)
)
->Future.all
->Future.map(cachedList => {
setVerticalData(_ => {items: cachedList})
})

Index in foreach starts not with 0

$rounds = $season->championsLeague->rounds->where('stage', 'Olympic')->take(2);
$indexes = [];
foreach ($rounds as $index => $round) {
$indexes[] = $index;
}
echo '<pre>';print_r($indexes);echo '<pre>';
And I receive in indexes: Array
(
[0] => 6
[1] => 7
)
How it is possible?
Why not Array
(
[0] => 0
[1] => 1
)
The slice, chunk, and reverse methods now preserve keys on the collection. If you do not want these methods to preserve keys, use the values method on the Collection instance. This is from laravel documentation. I think it is true for take method also.

AFNetworking - Request format is not proper when using dictionaries

I'm sending a dictionary 'childDetails' which has a dictionary (rewards) as one of its objects.
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
[manager POST:url parameters:childDetails constructingBodyWithBlock:^(id<AFMultipartFormData> formData)
This "rewards" dictionary has two keys "name" and "value" which looks like {#"name",#"Reward 1",#"value",#"10"}.
when this gets posted to the server, the server receives it as follows;
Array
(
[group_id] => 5
[name] => John Doe
[rewards] => Array
(
[0] => Array
(
[name] => Sample reward 2
)
[1] => Array
(
[value] => 50
)
[2] => Array
(
[name] => Sample Reward 1
)
[3] => Array
(
[value] => 10
)
)
[tasks] => Array
(
[0] => Array
(
[title] => Default task one
)
[1] => Array
(
[title] => Default task two
)
[2] => Array
(
[title] => Default task five
)
)
[token] => 5332884c2bc8c5
)
Any Idea how to fix this?
Any help is much appreciated.
Thanks in advance
I think the "parameters: param of POST: only accepts key/value pairs. Are you sure you don't have to serialize manually your objects first ?
Can you print the content of "childDetails" please ?
I found out that inorder to get it to work, you have to reformat your dictionary.
In my case I had to change it as;
NSDictionary *parameters = #{
#"rewards": #[
{#"reward name",#"reward value"},
{#"reward name",#"reward value"}
]
};;

iOS: adding key/value to multidimentional array at specific index

I'm pretty new in iOS dev. Basically I have a multidimensional array as per below
Array
(
[0] => Array
(
[Name] => Peter
[Gender] => Male
)
[1] => Array
(
[Name] => Glenn
[Gender] => Female
)
[2] => Array
(
[Name] => Richard
[Gender] => Male
)
)
At some point, I am going to add in additional key/value at certain index. Take for example, I am adding a new entry at index 1 at the end of the array(the sequence is not something to bother actually, it can fit in front or at the end) with [Location] => Japan
As such, the array should looks like this:
Array
(
[0] => Array
(
[Name] => Peter
[Gender] => Male
)
[1] => Array
(
[Name] => Glenn
[Gender] => Female
[Location] => Japan
)
[2] => Array
(
[Name] => Richard
[Gender] => Male
)
)
How can I achieve that? Pls inspect my code below as I really have no idea as every attempt results in EXC_BAD_ACCESS or app being terminated. Thanks in advance, Jason.
for(int x=0; x<[arrayVisitor count]; x++)
{
if ([[[arrayVisitor objectAtIndex:x]objectForKey:(#"Gender")]isEqual:#"Female"])
[[arrayVisitor objectAtIndex:x] addObject:[NSMutableDictionary dictionaryWithObjectsAndKeys: #"Location",#"Japan",nil]];
}
For this type of adding key value pair to array you need to use NSMutableArray and NSMutableDictionary.
NSMutableArray *outerArray=[[NSMutableArray alloc] init];
NSMutableDictionary *mutableDict=[[NSMutableDictionary alloc]initWithDictionary:[outerArray objectAtIndex:1]];
[mutableDict setObject:#"Japan" forKey:#"Location"];
[outerArray replaceObjectAtIndex:1 withObject:mutableDict];
Or using for loop as:------------------
NSMutableArray *arrayVisitor=[[NSMutableArray alloc] init];
int arrayLength=arrayVisitor.count;
for (int i=0;i<arrayLength;i++) {
NSMutableDictionary *mutableDict=[[NSMutableDictionary alloc]initWithDictionary:[arrayVisitor objectAtIndex:i]];
if ([[mutableDict valueForKey:#"Gender"] isEqualToString:#"Female"]) {
[mutableDict setObject:#"Japan" forKey:#"Location"];
[arrayVisitor replaceObjectAtIndex:i withObject:mutableDict];
}
}
Note:- It is not multidimensional array , it is Array of NSDictionary objects,It should look like this
Array=(
{
Name= Peter
Gender= Male
},
{
Name = Glenn
Gender = Female
},
{
Name = Richard
Gender = Male
}
)

Neo4j ResultSet Object - how to get data if result is an array

I have one gremlin query in which I used cap().next()
and Everyman\Neo4j\Query\ResultSet Object is
...
[data:protected] => Array
(
[v[1079]] => Array
(
[0] => 14
)
[v[1082]] => Array
(
[0] => 25
)
[v[1016]] => Array
(
[0] => 5
)
[v[1078]] => Array
(
[0] => 10
)
[v[1081]] => Array
(
[0] => 17
)
)
...
how to get that array?
$result[0][0] is not working.
To iterate ResultSets use
foreach ($result as $row) {
echo $row['x']->getProperty('your_property') . "\n";
}
or with scalar values in column y
foreach ($result as $row) {
echo $row['x']->getProperty('your_property') . ": " . $row['y'] ."\n";
}
It would be nice to have the original gremlin query thought to see what you are returning from it.
see github

Resources