Hướng dẫn dùng keep keys trong PHP

The deal here is that I have an array with 17 elements. I want to get the elements I need for a certain time and remove them permanently from the array.

Nội dung chính

  • How to remove multiple key from array in PHP?
  • How to unset multiple session in PHP?
  • How do you unset a variable in PHP?
  • How can I find the difference between two arrays in PHP?

Here's the code:

$name = $post['name'];
$email = $post['email'];
$address = $post['address'];
$telephone = $post['telephone'];
$country = $post['country'];

unset($post['name']);
unset($post['email']);
unset($post['address']);
unset($post['telephone']);
unset($post['country']);

Yes the code is ugly, no need to bash. How do I make this look better?

alex

466k197 gold badges865 silver badges975 bronze badges

asked Oct 25, 2011 at 5:19

1

Use array_diff_key to remove

$remove = ['telephone', 'country'];

$removed = array_diff_key($post, array_flip($remove));

You could use array_intersect_key if you wanted to supply an array of keys to keep.

answered Nov 19, 2015 at 10:13

TimTim

4,1914 gold badges33 silver badges39 bronze badges

3

It looks like the function extract() would be a better tool for what you're trying to do (assuming it's extract all key/values from an array and assign them to variables with the same names as the keys in the local scope). After you've extracted the contents, you could then unset the entire $post, assuming it didn't contain anything else you wanted.

However, to actually answer your question, you could create an array of the keys you want to remove and loop through, explicitly unsetting them...

$removeKeys = array('name', 'email');

foreach($removeKeys as $key) {
   unset($arr[$key]);
}

...or you could point the variable to a new array that has the keys removed...

$arr = array_diff_key($arr, array_flip($removeKeys));

...or pass all of the array members to unset()...

unset($arr['name'],  $arr['email']);

answered Oct 25, 2011 at 5:20

alexalex

466k197 gold badges865 silver badges975 bronze badges

3

There is another way which is better then the above examples. Source: http://php.net/manual/en/function.unset.php

Instead of looping thorough the entire array and unsetting all its keys, you can just unset it once like so:

Example Array:

$array = array("key1", "key2", "key3");

For the entire array:

unset($array);

For unique keys:

unset($array["key1"]);

For multiple keys in one array:

unset($array["key1"], $array["key2"], $array["key3"] ....) and so on.

I hope this helps you in your development.

Rob

4,88912 gold badges49 silver badges51 bronze badges

answered Aug 1, 2014 at 8:25

CodingDailyCodingDaily

5914 silver badges2 bronze badges

I understand this question is old, but I think an optimal way might be to do this:

$vars = array('name', 'email', 'address', 'phone'); /* needed variables */
foreach ($vars as $var) {
    ${$var} = $_POST[$var]; /* create variable on-the-fly */
    unset($_POST[$var]); /* unset variable after use */
}

Now, you can use $name, $email, ... from anywhere ;)

NB: extract() is not safe, so it's completely out of question!

answered Dec 2, 2013 at 11:17

2


answered Jan 12, 2021 at 20:09

ahmedkandilahmedkandil

4023 silver badges6 bronze badges

1

In php unset function can take multiple arguments

$test = ['test1' => 1, 'test2' => 4, 'test34' => 34];

unset($test['test1'], $test['test34']);

Here is this description from documentation

unset(mixed $var, mixed ...$vars): void

answered May 29 at 14:20

How to remove multiple key from array in PHP?

if you see in php documentation there are not available directly remove multiple keys from php array. But we will create our own php custom function and remove all keys by given array value. In this example i created custom function as array_except().

How to unset multiple session in PHP?

A PHP session can be destroyed by session_destroy() function. This function does not need any argument and a single call can destroy all the session variables. If you want to destroy a single session variable then you can use unset() function to unset a session variable.

How do you unset a variable in PHP?

The unset() function in PHP resets any variable. If unset() is called inside a user-defined function, it unsets the local variables. If a user wants to unset the global variable inside the function, then he/she has to use $GLOBALS array to do so.

How can I find the difference between two arrays in PHP?

The array_diff() function compares the values of two (or more) arrays, and returns the differences. This function compares the values of two (or more) arrays, and return an array that contains the entries from array1 that are not present in array2 or array3, etc.