Как убрать индексы из массива в php?
Я ищу, кроме одного элемента из массива. Мой массив:
Array
(
[0] => Array
(
[0] => Array
(
[COUNT(ID)] => 0
)
)
)
Я уже использую функции PHP basename
а также array_shift
, но они не дали мне надлежащую ценность. Я хочу только одну строку COUNT(ID)
значение.
Вот моя функция, используемая в модели CakePHP:
$res = $this->query("select COUNT(ID) from users where Username = '".$Username['Username']."'");
if ($res[0][0]['COUNT(ID)'] >= 1)
{
return false;
}
else
{
return true;
}
Мне не нужно $res[0][0]
Мне нужно только COUNT[ID]
, Есть ли простой способ найти только COUNT[ID]
,
8 ответов
Если вы используете CakePHP, хорошо бы использовать модель и встроенные функции, чтобы получить ответ, что вы хотите...
$this->loadModel('User'); //If you are in controller
$total = $this->User->find('count', array(
'conditions' => array('Username' => $Username['Username'])
));
Вы получите ответ в одной переменной..!!
Допустим, имя вашего массива $myArray
чем вы можете присвоить значение $myArray[0][0]['COUNT(ID)']
в $value
так, как вы обычно назначаете значение: $value = $myArray[0][0]['COUNT(ID)'];
,
Если вы хотите удалить индекс из массива, используйте unset()
как это: unset($myArray[0][0]['COUNT(ID)'])
, Надеюсь, это ответит на ваш вопрос.
Вы можете получить его по ассоциативному массиву, чтобы уменьшить размерность, но вы можете удалить индекс. Может быть, вы можете использовать foreach для автоматического использования индексов.
Если вы уверены, что структура массива останется прежней, это может быть полезно:
function array_values_recursive($ary)
{
$lst = array();
foreach( array_keys($ary) as $k ){
$v = $ary[$k];
if (is_scalar($v)) {
$lst[] = $v;
} elseif (is_array($v)) {
$lst = array_merge( $lst,
array_values_recursive($v)
);
}
}
return $lst;
}
$arr=array(array(array('COUNT(ID)'=>5)));
$res=array_values_recursive($arr);
echo '<pre>';print_r($res);
выход:-
Array
(
[0] => 5
)
Попробуйте этот код:
public $uses = array('User');
$count = $this->User->find('count', array(
'conditions' => array('Username' => $Username['Username'])
));
if ($count >= 1) {
return false;
} else {
return true;
}
Если вы знаете точное число вложений в массиве, вы можете просто получить к нему доступ с помощью индексов.
$array[0][0]['COUNT(ID)']
Если нет, вы можете использовать функцию, которая рекурсивно найдет первый вложенный элемент, который не является массивом
function getStringFromArray($array) {
if (is_array($array)) {
foreach ($array as $key => $value) {
if (is_array($value)) {
return getStringFromArray($value);
} else {
return $value;
}
}
} else {
throw new Exception("Not an array given");
}
}
Ваш вывод производится с помощью кода, подобного этому
$data = array(
array(
array(
'COUNT(ID)' => 0
)
)
);
Вы можете получить доступ к его значению, позвонив напрямую
$data[0][0]['COUNT(ID)']
Это может быть неправильной проблемой, которую вы решаете, так как это выглядит как результат запроса к базе данных, который не должен выглядеть так, и его можно было бы выполнить с большей легкостью. Вы должны показать свою исходную функцию / проблему, частью которой является этот скрипт.
Вы можете использовать следующую технику для вашего решения. я не получил то, что вы хотите сделать с вашим массивом, но вы можете попробовать ниже решение
$arr = Set::extract("/0/COUNT(ID)",$data);
где $data - ваш входной массив.
вы получите следующий вывод
Array
(
[0] => 5
)
Вы можете обратиться по ссылке ниже