Heim >Backend-Entwicklung >PHP-Tutorial >thinkPHP 获取 字段名,还有更加简单的办法吗?

thinkPHP 获取 字段名,还有更加简单的办法吗?

WBOY
WBOYOriginal
2016-07-06 13:53:551186Durchsuche

thinkphp 3.2

<code>$use=D('classone');

$db=$use->select(5);

$arr = $db[0] ? $db[0] : '';

foreach($arr as $key => $value)
{
       $arrKey[] =  $key;

}</code>

这个,我把 字段 的名字,获取成了一个数组 $arrKey ,但是我觉得这个办法比较笨,应该有直接就获取的办法,请问有没有???

回复内容:

thinkphp 3.2

<code>$use=D('classone');

$db=$use->select(5);

$arr = $db[0] ? $db[0] : '';

foreach($arr as $key => $value)
{
       $arrKey[] =  $key;

}</code>

这个,我把 字段 的名字,获取成了一个数组 $arrKey ,但是我觉得这个办法比较笨,应该有直接就获取的办法,请问有没有???

tp5么

<code>/**
     * 获取数据表信息
     * @access public
     * @param string $tableName 数据表名 留空自动获取
     * @param string $fetch 获取信息类型 包括 fields type bind pk
     * @return mixed
     */
    public function getTableInfo($tableName = '', $fetch = '')
    {
        static $_info = [];
        if (!$tableName) {
            $tableName = $this->getTable();
        }
        if (is_array($tableName)) {
            $tableName = key($tableName) ?: current($tableName);
        }
        if (strpos($tableName, ',')) {
            // 多表不获取字段信息
            return false;
        }
        $guid = md5($tableName);
        if (!isset($_info[$guid])) {
            $info   = $this->connection->getFields($tableName);
            $fields = array_keys($info);
            $bind   = $type   = [];
            foreach ($info as $key => $val) {
                // 记录字段类型
                $type[$key] = $val['type'];
                if (preg_match('/(int|double|float|decimal|real|numeric|serial)/is', $val['type'])) {
                    $bind[$key] = PDO::PARAM_INT;
                } elseif (preg_match('/bool/is', $val['type'])) {
                    $bind[$key] = PDO::PARAM_BOOL;
                } else {
                    $bind[$key] = PDO::PARAM_STR;
                }
                if (!empty($val['primary'])) {
                    $pk[] = $key;
                }
            }
            if (isset($pk)) {
                // 设置主键
                $pk = count($pk) > 1 ? $pk : $pk[0];
            } else {
                $pk = null;
            }
            $result       = ['fields' => $fields, 'type' => $type, 'bind' => $bind, 'pk' => $pk];
            $_info[$guid] = $result;
        }
        return $fetch ? $_info[$guid][$fetch] : $_info[$guid];
    }</code>

总结thinkphp快捷查询getBy、getField、getFieldBy用法及场景 http://baijunyao.com/article/59

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn