Solved

How can I remove a element from an array in PHP

Posted on 2008-06-13
20
199 Views
Last Modified: 2013-11-19
Suppose I have an array in PHP as shown below
a[0] = "0";
a[1] = "1";
a[2] = "2";

How can I remove the first element in an array and then all the rest of the elements will shift their position to the left.
i.e. a[0] = "1";
a[1] = "2";

Thanks!
0
Comment
Question by:mawingho
  • 8
  • 6
  • 4
  • +2
20 Comments
 
LVL 4

Expert Comment

by:afzz
ID: 21776604
see the following function

http://in2.php.net/array_shift
0
 

Author Comment

by:mawingho
ID: 21776610
How about the element not the first one?
0
 
LVL 142

Expert Comment

by:Guy Hengel [angelIII / a3]
ID: 21776616
this should do
unset(a[0]);

Open in new window

0
 
LVL 4

Expert Comment

by:afzz
ID: 21776617

$a = array("0","1","2");

$firstelement = array_shift($a);

print_r($a);

//Now array is $a[0]="1", $a[1] ="2"

Open in new window

0
 
LVL 4

Expert Comment

by:afzz
ID: 21776629
0
 

Author Comment

by:mawingho
ID: 21776631
unset is doesn't work
0
 
LVL 4

Expert Comment

by:afzz
ID: 21776667
array_splice($a, 0); //will remove the first element
array_splice($a, 1);//Will remove the second and so on..
0
 

Author Comment

by:mawingho
ID: 21776674
I want to remove just ONE element
0
 

Author Comment

by:mawingho
ID: 21776677
any function can help me to remove JUST any ONE element from an array.
0
 
LVL 48

Expert Comment

by:hernst42
ID: 21776693
array_hist does excatly that what you posted in your example. If it's not working please give a new, correct example.
0
Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

 

Author Comment

by:mawingho
ID: 21776701
is this a valid function =.=''
0
 
LVL 4

Expert Comment

by:afzz
ID: 21776729
function remove_element($array,$element){
array_splice($array,$element);
return $array;
}
//This funtion will remove the element you want from your array
$a = remove_element($a,0);
0
 

Author Comment

by:mawingho
ID: 21776749
If I have an array

a, b, c, d, e, f, g

now I remove c
the function SHOULD give me back

a,b,d,e,f,g
0
 
LVL 48

Expert Comment

by:hernst42
ID: 21776769
ok try this:




function removeElement($arr, $element) {

   unset($arr[array_search($element, $arr)]);

   return array_values($arr);

}
 

$a = array('a', 'b', 'c', 'd', 'e', 'f', 'g');

print_r(removeElement($a, 'c'));

Open in new window

0
 
LVL 14

Expert Comment

by:ali_kayahan
ID: 21776786
Hi mawingho: array_splice() function is what you need.. its usage is ;
array_splice(Your array,starting index,count of elements that you want to remove) ;
Your array = $a ;
starting index = 1 ;(Will start remove from index 1)
count of elements = 1 (to remove 1 element) ;
    Also array_shift(Your Array) will remove the first element in your array.
After applied all,to shift array one left you may use sort() ;
sort(your array) ;
0
 
LVL 4

Expert Comment

by:afzz
ID: 21777132

function remove_element($a, $element) {

return array_splice($a,array_search($element, $a));

}

$a = array('a', 'b', 'c', 'd', 'e', 'f', 'g');

print_r(remove_element($a, 'c'));

Open in new window

0
 
LVL 48

Expert Comment

by:hernst42
ID: 21777153
afzz that code does not work, its missing a,b but c and the rest is still in there, haven't you tried it?
0
 
LVL 4

Expert Comment

by:afzz
ID: 21777185
ok try this it should work
function remove_element($a, $element) {

return array_splice($a,array_search($element, $a),1);

}

$a = array('a', 'b', 'c', 'd', 'e', 'f', 'g');

print_r(remove_element($a, 'c'));

Open in new window

0
 
LVL 48

Expert Comment

by:hernst42
ID: 21777207
@afzz
that does not work neither result is only c. Is it so hard to test the output of the code before posting worng solutuions, so it works as the asker expects.
0
 
LVL 4

Accepted Solution

by:
afzz earned 500 total points
ID: 21777238
sorry I did not get your question right. Try the following I have checked it works.
<?

function remove_element($a, $element) {

$tmp = array_splice($a,array_search($element, $a),1);

sort($a);

return $a;

}

$a = array('a', 'b', 'c', 'd', 'e', 'f', 'g');

print_r(remove_element($a, 'c'));

?>

Open in new window

0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

These days socially coordinated efforts have turned into a critical requirement for enterprises.
Introduction This article is intended for those who are new to PHP error handling (https://www.experts-exchange.com/articles/11769/And-by-the-way-I-am-New-to-PHP.html).  It addresses one of the most common problems that plague beginning PHP develop…
In this tutorial viewers will learn how to embed an audio file in a webpage using HTML5. Ensure your DOCTYPE declaration is set to HTML5: : The declaration should display (CODE) HTML5 is supported by the most recent versions of all major browsers…
Learn how to create flexible layouts using relative units in CSS.  New relative units added in CSS3 include vw(viewports width), vh(viewports height), vmin(minimum of viewports height and width), and vmax (maximum of viewports height and width).

920 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

18 Experts available now in Live!

Get 1:1 Help Now