У меня есть массив, который содержит список значений 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" } }
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);