Сдвинуть элемент до конца массива

У меня есть массив, который содержит список значений pagrank. Рассмотрим ниже массив:

Array ( [0] => stdClass Object ( [pagerank] => 3 ) [1] => stdClass Object ( [pagerank] => 1 ) [2] => stdClass Object ( [pagerank] => R ) [3] => stdClass Object ( [pagerank] => 2 ) [4] => stdClass Object ( [pagerank] => 7 ) ) 

Я хочу сдвинуть / перенести ранг страницы с помощью «R»:

 [2] => stdClass Object ( [pagerank] => R ) 

до конца массива, и он должен быть на последнем индексе массива?

Изменить: ключ массива неизвестен.

Если индекс неизвестен:

 foreach($array as $key => $val) { if($val->pagerank == 'R') { $item = $array[$key]; unset($array[$key]); array_push($array, $item); break; } } с foreach($array as $key => $val) { if($val->pagerank == 'R') { $item = $array[$key]; unset($array[$key]); array_push($array, $item); break; } } 
 $item = $array[2]; unset($array[2]); array_push($array, $item); с $item = $array[2]; unset($array[2]); array_push($array, $item); 

Что-то вроде этого?

 $var = array( 'name' => 'thename', 'title' => 'thetitle', 'media' => 'themedia' ); // Remove first element (the name) $name = array_shift($var); // Add it on to the end $var['name'] = $name; var_dump($var); /* array(3) { ["title"]=> string(8) "thetitle" ["media"]=> string(8) "themedia" ["name"]=> string(7) "thename" } */ 

Ссылка: http://forums.phpfreaks.com/topic/177878-move-array-index-to-end/

  $item=null; foreach ($array['pagerank'] as $key => $value) { if( $value=="R") { $item = $array[$key]; unset($array[$key]); break; } } if($item !=null) array_push($array, $item); с  $item=null; foreach ($array['pagerank'] as $key => $value) { if( $value=="R") { $item = $array[$key]; unset($array[$key]); break; } } if($item !=null) array_push($array, $item); 

Попробуй это :

 $arr = array(array("pagerank" => 3), array("pagerank" => 1), array("pagerank" => 'R'), array("pagerank" => 4), array("pagerank" => 7), array("pagerank" => 5), array("pagerank" => 2) ); foreach($arr as $key=>$ar){ if($ar["pagerank"] == "R"){ $unset = $key; break; } } $val = $arr[$unset]; unset($arr[$unset]); $arr[] = $val; print_r($arr); с $arr = array(array("pagerank" => 3), array("pagerank" => 1), array("pagerank" => 'R'), array("pagerank" => 4), array("pagerank" => 7), array("pagerank" => 5), array("pagerank" => 2) ); foreach($arr as $key=>$ar){ if($ar["pagerank"] == "R"){ $unset = $key; break; } } $val = $arr[$unset]; unset($arr[$unset]); $arr[] = $val; print_r($arr); 

Если вы ищете именно значение r, вы можете использовать array_search

array_search возвращает ключ, если элемент существует в массиве, иначе возвращает false.

 $needle = "R"; if($key = array_search($needle, $pageRankArray)) { unset($pageRankArray[$key]); // Delete an item from the array array_push($pageRankArray, $needle); // inserts element at the end of the array } с $needle = "R"; if($key = array_search($needle, $pageRankArray)) { unset($pageRankArray[$key]); // Delete an item from the array array_push($pageRankArray, $needle); // inserts element at the end of the array } 

Если вы хотите разместить R в качестве последнего значения и сохранить свои ключи, вы можете сделать это:

 $arr = array( (object)array('pagerank' => 1), (object)array('pagerank' => 'R'), (object)array('pagerank' => 2), ); // Store in temp var. $tmp_arr = $arr; // Sort temp array to put 'R' in top. asort($tmp_arr); // Reset to be able to find the first key in the sorted array. reset($tmp_arr); // Get key from first value in array. $key = key($tmp_arr); // Store value from first key. $item = $tmp_arr[$key]; // Unset key from original array. unset($arr[$key]); // Insert as last value in original array using original key. $arr[$key] = $item; // Print result. var_dump($arr); с $arr = array( (object)array('pagerank' => 1), (object)array('pagerank' => 'R'), (object)array('pagerank' => 2), ); // Store in temp var. $tmp_arr = $arr; // Sort temp array to put 'R' in top. asort($tmp_arr); // Reset to be able to find the first key in the sorted array. reset($tmp_arr); // Get key from first value in array. $key = key($tmp_arr); // Store value from first key. $item = $tmp_arr[$key]; // Unset key from original array. unset($arr[$key]); // Insert as last value in original array using original key. $arr[$key] = $item; // Print result. var_dump($arr); 

Это даст вам:

 array(3) { [0]=> object(stdClass)#1 (1) { ["pagerank"]=> int(1) } [2]=> object(stdClass)#3 (1) { ["pagerank"]=> int(2) } [1]=> object(stdClass)#2 (1) { ["pagerank"]=> string(1) "R" } } 

См .: http://codepad.org/gPhrktuJ

 foreach ($arr as $key => $value){ if ($value->pagerank == 'R'){ $arr[] = $value; unset($arr[$key]); break; } } $arr = array_values($arr); с foreach ($arr as $key => $value){ if ($value->pagerank == 'R'){ $arr[] = $value; unset($arr[$key]); break; } } $arr = array_values($arr); 

Если у вас есть несколько объектов со значением «R»:

 $current_array = $sorted_array = Array( ... ); foreach($current_array as $current_key => $element){ if($element->pagerank == 'R'){ unset($sorted_array[$current_key]); $sorted_array[] = $element; } } unset($current_array); с $current_array = $sorted_array = Array( ... ); foreach($current_array as $current_key => $element){ if($element->pagerank == 'R'){ unset($sorted_array[$current_key]); $sorted_array[] = $element; } } unset($current_array);