как это можно сделать без перебора ?
$array = array(4=>'трям', 6=>'трям', 8=>'трям', 9=>'трям', 11=>'трям');
$action = 6;
foreach ($array AS $k=>$v){
if (empty($action))
return $k;
if ($k == $action)
$action = 0;
}
$array = array(4=>'трям', 6=>'трям', 8=>'трям', 9=>'трям', 11=>'трям');
$action = 6;
foreach ($array AS $k=>$v){
if (empty($action))
return $k;
if ($k == $action)
$action = 0;
}
Цитата (Kusss @ 17.11.2015 - 14:48) |
Известен текущий ключ, нужно получить следующий. как это можно сделать без перебора ? |
function getNextKey($arr, $key) {
$keys = array_keys($arr);
$idx = array_search($key, $keys);
if ($idx === false || $idx == count($arr) - 1) return null;
return $keys[$idx+1];
}
// test
$array = array(4=>'трям', 6=>'трям', 8=>'трям', 9=>'трям', 11=>'трям');
echo getNextKey($array, 6)
$sql = "
SELECT
name.*
FROM
`razdel2_product` AS r
LEFT JOIN
`product` AS pr ON pr.id = r.product_id
LEFT JOIN
`print_razdel` AS print_razdel ON print_razdel.print_id = pr.print_id
LEFT JOIN
`print_razdel_name` AS name ON name.id = print_razdel.print_razdel_id
WHERE
r.razdel2_id = ".(int)$razdel_select." AND
pr.live = 0
GROUP BY
print_razdel.print_razdel_id
ORDER BY
name.id
";
Цитата (Kusss @ 17.11.2015 - 17:08) |
Есть входящие данные: номер раздела($razdel_select) и текущая id из выборки ($action) |
Цитата (Kusss @ 17.11.2015 - 15:48) |
Известен текущий ключ, нужно получить следующий. |
Цитата (Kusss @ 17.11.2015 - 16:54) |
Вопрос "как это сделать ?", был тактично пропущен |
Цитата |
Да никак наверное без перебора. |
$transport = array('foot'=>2, 'bike'=>34, 'car'=>4, 'plane'=>54);
$cur_key = 'bike';
$keys = array_keys($transport);
$fliped_array = array_flip($keys);
$indexKey = $fliped_array[$cur_key];
$slice_array = array_slice($transport, $indexKey+1,1);
$nextKeyValue = array_keys($slice_array);
$next_key =$nextKeyValue[0];
echo $next_key; //car
select * from table where id> (select * from table where name='car') limit 1
Цитата (Игорь_Vasinsky @ 17.11.2015 - 18:15) |
select * from table where id> (select * from table where name='car') limit 1 |
Цитата |
В том решении, что Игорь написал (на ПХП) этих циклов внутри функций будет много. |
<?php
$transport = array('foot', 'bike', 'car', 'plane');
$mode = current($transport); // $mode = 'foot';
$mode = next($transport); // $mode = 'bike';
$mode = next($transport); // $mode = 'car';
$mode = prev($transport); // $mode = 'bike';
$mode = end($transport); // $mode = 'plane';
?>
Цитата (Valick @ 17.11.2015 - 21:20) |
не прокатит |