如何从PHP中的数组中删除索引?

时间:2014-07-14 10:13:28

标签: arrays cakephp

我期待除了数组中的单个元素。我的阵列是:

Array
(
    [0] => Array
        (
            [0] => Array
                (
                    [COUNT(ID)] => 0
                )
        )
)

我已经使用过PHP函数basenamearray_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 个答案:

答案 0 :(得分:6)

如果您正在使用CakePHP,最好使用模型和内置函数来获得您想要的答案......

$this->loadModel('User');    //If you are in controller
$total = $this->User->find('count', array(
    'conditions' => array('Username' => $Username['Username'])
));

你会在单个变量中得到答案.. !!

答案 1 :(得分:0)

您的输出是由像这样的代码生成的

$data = array(
    array(
        array(
            'COUNT(ID)' => 0
        )
    )
);

您可以直接致电

来访问其值
$data[0][0]['COUNT(ID)']

这可能是wrong problem you are solving,因为看起来数据库查询结果应该看起来不那样,并且可以更轻松地完成。您应该显示原始功能/问题,该脚本是其中的一部分。

答案 2 :(得分:0)

我们假设您的数组名称为$myArray,而您可以按照通常分配值的方式将$myArray[0][0]['COUNT(ID)']的值分配给$value$value = $myArray[0][0]['COUNT(ID)'];

如果要从数组中删除索引,请使用unset(),如下所示:unset($myArray[0][0]['COUNT(ID)'])。我希望这能回答你的问题。

答案 3 :(得分:0)

如果您知道数组中嵌套的确切数量,您只需使用索引

即可访问它
$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");
    }
}

答案 4 :(得分:0)

如果您确定数组结构保持不变,那么这可能很有用: -

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
 )

答案 5 :(得分:0)

您可以通过关联数组来获取它以减少维度,但您可以删除索引。也许你可以使用foreach自动使用索引。

答案 6 :(得分:0)

试试这段代码:

public $uses = array('User');
$count = $this->User->find('count', array(
    'conditions' => array('Username' => $Username['Username'])
        ));
if ($count >= 1) {
    return false;
} else {
    return true;
}

答案 7 :(得分:0)

您可以使用以下技术为您的解决方案。我没有得到你想对你的阵列做什么,但你可以尝试下面的解决方案

$arr = Set::extract("/0/COUNT(ID)",$data);

其中$ data是您的输入数组。

您将获得以下输出

Array
(
  [0] => 5
)

您可以参考以下链接

Remove array key from array in cakephp