Jump to content

Ghoti

New Members
  • Posts

    6
  • Joined

  • Last visited

Ghoti's Achievements

Newbie

Newbie (1/5)

0

Reputation

  1. This was very helpful. Thank you!!
  2. To clarify my question more: This code: $search="Joe"; for ($j=1; $j<=5; $j++){ if($key = array_search($search, array_column($test, "name"))) { echo $test[$key]["name"].' exists in array at key '.$key.". Increasing qty.<br \>"; $test[$key]["qty"] = $test[$key]["qty"] + 1; } else { echo $search." is not in the array. Adding it!<br />"; $test[] = array("name"=>$search, "qty"=>"1"); } } for ($k=0; $k<count($test); $k++){ echo $test[$k]['name']." x".$test[$k]['qty']."<br />"; } Results in this output: Joe is not in the array. Adding it! Joe is not in the array. Adding it! Joe is not in the array. Adding it! Joe is not in the array. Adding it! Joe is not in the array. Adding it! Joe x1 Joe x1 Joe x1 Joe x1 Joe x1 As you can see, even though Joe gets added to the array on the first pass, the array search doesn't find it during the next 4 loops. It just gets added 4 more times, instead of adding to the quantity of the existing entry. Now, if I initialize the array with some bogus values like this: $test[] = array("name"=>"Steve", "qty"=>"1"); // THIS IS THE ONLY LINE THAT IS DIFFERENT FROM THE PREVIOUS CODE. $search="Joe"; for ($j=1; $j<=5; $j++){ if($key = array_search($search, array_column($test, "name"))) { echo $test[$key]["name"].' exists in array at key '.$key.". Increasing qty.<br \>"; $test[$key]["qty"] = $test[$key]["qty"] + 1; } else { echo $search." is not in the array. Adding it!<br />"; $test[] = array("name"=>$search, "qty"=>"1"); } } for ($k=0; $k<count($test); $k++){ echo $test[$k]['name']." x".$test[$k]['qty']."<br />"; } Now the code works as intended. Joe is added on the 1st pass, and is found on the next 4 loops.... and we get this output, as intended: Joe is not in the array. Adding it! Joe exists in array at key 1. Increasing qty. Joe exists in array at key 1. Increasing qty. Joe exists in array at key 1. Increasing qty. Joe exists in array at key 1. Increasing qty. Steve x1 Joe x5 I can't figure out why it works if I add initialize the array with the bogus Steve entry.
  3. Thanks. This was just a typo on my part, sorry. You can see that I did it that way in the code area. The question here is, why does adding that initial setting of a bogus array value make my code work?
  4. Thanks, but I don't think this accomplishes my goal. This is a simplified version, but the basic idea is that new names get added, and existing names increase the qty. I can't use the names as the keys though, because the actual use is much more complicated than my example here.
  5. Hey guys. In the script below i'm trying to check to see if a name exists in a multi-dimensional array. If it exists, I increase the quantity field in the array. If it does not exist, it gets added to the array. The code below does not work as expected. The 1st time through, it does not find the name Joe, so it successfully creates an entry for $test[0] with Joe and 1 as the array values. The 2nd-5th times through it never finds the previous entry, so I end up the same entry 5 times. All I have to do to make this exact same code work is to create an entry for the $test array before the for loop. For example, if I simply add this line to the top of the script it works: $test[] = array("name"="Steve", "qty" = "1"); What am I missing? I've tried initializing the array before the loop with $test = array(); but that doesn't do any good. Thanks for any advice you can offer! $search="Joe"; for ($j=1; $j<=5; $j++){ if($key = array_search($search, array_column($test, "name"))) { echo $test[$key]["name"].' exists in array at key '.$key.". Increasing qty.<br \>"; $test[$key]["qty"] = $test[$key]["qty"] + 1; } else { echo $search." is not in the array. Adding it!<br />"; $test[] = array("name"=>$search, "qty"=>"1"); } } for ($k=0; $k<count($test); $k++){ echo $test[$k]['name']." x".$test[$k]['qty']."<br />"; }
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.