Возможно, я вас неправильно понял, но я предполагаю, что вы пытаетесь обнаружить index
или key
для желаемого id
внутри array
, возвращаемого из запроса SQL
, который отсортирован по какому-то другому столбцу, например total
.
Итак, давайте получим записи из базы данных с вашим запросом с небольшим изменением asArray()
нравится это
$find = People::find()
->where(['c_id' => $c_id])
->orderBy('totals DESC, id DESC')
->asArray()
->all();
в результате предположим, что таблица People
возвращает вам массив со следующим набором данных, упорядоченным по столбцам total
и id
DESC
.
[
0 => [
'id' => 2 ,
'c_id'=>2,
'name' => 'John' ,
'age'=>18,
'totals'=>100,
],
1=>[
'id'=>1,
'c_id'=>55,
'name'=>'Bob',
'age'=>20,
'totals'=>80,
],
2=>[
'id'=>3,
'c_id'=>85,
'name'=>'Peter',
'age'=>15,
'totals'=>75,
]
];
Теперь, если вы посмотрите на \yii\helpers\ArrayHelper
вы найдете ArrayHelper::getColumn()
.
Давайте применим это к массиву, который мы получили из запроса. Я предполагаю, что вы ищете $id
внутри столбца id
, поэтому мы сначала отфильтруем столбец id
, как показано ниже.
$idsArray = ArrayHelper::getColumn($find, 'id');
это даст нам идентификаторы в следующей последовательности, которая находится в том же порядке, что и исходный набор результатов.
[2,1,3]
затем воспользуемся встроенной функцией php
array_search()
$key=array_search($yourId,$idsArray);
Надеюсь, это то, что вы ищете.
13.11.2017