0

I have into $_POST array all the data i need.

If I print_r the array, I see something like this:

Array (
  [0_45_115] => 01
  [0_46_115] => 01
  [0_47_115] => 01
  [0_48_115] => 01
  [0_49_115] => 01
  [0_50_115] => 01
  [0_51_115] => 01
  [0_52_115] => 01
  [0_53_115] => 01
  [0_54_115] => 01
  [0_55_115] => 01
  [0_56_115] => 01
  [0_57_115] => 01
  [0_58_115] => 01
  [0_59_115] => 01
  [0_60_115] => 01
  [0_61_115] => 01
  [0_62_115] => 01
  [0_63_115] => 01
  [0_64_115] => 01
  [0_65_115] => 01
  [0_66_115] => 01
  [0_67_115] => 01
)

The index i post from the form (the name attr) doesn't have underscores. For example:

<input type="text" name="0 45 115" value="" />

Let's forget this.

0_45_115 which the index is will provide me all the neccessery data I want to update or insert a new row into my database. The value will saw me the information I want.

The problem is that I don't know how to manage the array. Maybe I must use foreach method, and the I will use split function to split the index of each row. Then I will do all the other stuff for insertion/update my database.

I ask how can I use foreach to take the info (index-data) from $_POST array.

4 Answers 4

1

The spaces are converted to underscores per PHP specifications. See this page for more details. Specifically, search for this string in the page: Dots and spaces in variable names are converted to underscores.

I think the right approach would be

foreach($_POST as $key => $value)
{
    $parts = explode('_', $key);    //split your $key
    //then deal with corresponding $value
}
Sign up to request clarification or add additional context in comments.

Comments

1
foreach( $yourArray as $k => $v ) { 

   $keys = explode( "_", $k) // for first iterate you will get array('0','45','115')

}

1 Comment

your solution is better.. I must learn object oriented php and PDO, but no free time unfortunatelly..:( Thx for the answer
1

See the array_keys() function.
It will return all the keys of the input array, than you can use the split() function to work on the keys and get the data you need.

For example:

$keys = array_keys($yourArray);
foreach($keys as $k) {
    $data = split("_", $k);
    print $data[0];
    print $data[1];
    print $data[2];

}

2 Comments

it seems that's what i am looking for.. Do you have any explanation of underscores mr gualano?
I've edited my answer with a little example of the split() function.
0

As an alternative to a loop, you can use array_map:

array_map(function ($str) {return explode('_', $str);}, 
          array_keys($_POST));

Result:

array (
  array (
    0 => '0',
    1 => '45',
    2 => '115',
  ),
  array (
    0 => '0',
    1 => '46',
    2 => '115',
  ),
  array (
    0 => '0',
    1 => '47',
    2 => '115',
  ),
  ...

Since only PHP 5.3 and newer have anonymous functions at the language level, a loop is the better choice if you need to support earlier PHP versions. Otherwise, you have to use create_function, which is just ugly.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.