在一个软件中,我将两个数组合并为array_merge函数.但我需要将相同的数组(当然具有相同的键)添加到现有数组中.
问题:
$A = array('a' => 1, 'b' => 2, 'c' => 3);
$B = array('c' => 4, 'd'=> 5);
array_merge($A, $B);
// result
[a] => 1 [b] => 2 [c] => 4 [d] => 5
Run Code Online (Sandbox Code Playgroud)
如你所见,'c' => 3错过了.
那么我怎么能用相同的键合并所有这些呢?
PHP中的Object和Class有什么区别?我问,因为,我并没有真正看到他们两个人的意思.
你能告诉我一个很好的例子吗?
我试图从层次结构中获取MySQL数据库中的所有类别和子类别:
我的结果应该是那样的(只是示例):
- 猫A
- 子猫1
- Sub_Sub_Cat 1
- Sub_Sub_Cat 2
- Sub_Cat 2
- 猫B
- 猫C
- ...
MySQL代码:
CREATE TABLE IF NOT EXISTS `categories` (
`category_id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
`parent_id` mediumint(8) unsigned NOT NULL DEFAULT '0' COMMENT 'for sub-categories'
PRIMARY KEY (`category_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ;
Run Code Online (Sandbox Code Playgroud)
简单地说,如何使用PHP代码进行hirarchy ?
一位朋友评价如下:
我建议将您的交易数据和报告数据分离到一个单独的数据库中
另一个人告诉我:
我将在事务数据中实现ER模式,并在报告数据库中实现星型模式
任何人都可以让我清楚吗?我问,因为我真的没有区别?
有时我不确定在MysQL中是否使用enum或char(1).例如,我存储帖子的状态.通常情况下,我只需要Active或Passive在status现场估价.我有两个选择:
// CHAR
status char(1);
// ENUM (but too limited)
status enum('A', 'P');
Run Code Online (Sandbox Code Playgroud)
如果我想Hidden在将来再添加一种状态类型(即.)怎么样?如果我有小数据,这将不是问题.但是如果我的数据太大,那么编辑ENUM类型就会出问题.
那么如果我们考虑MySQL性能,你的建议是什么?我会走哪条路?
如您所知,PHP类具有私有,公共和受保护的关键字.我刚刚开始编写类,我想知道PHP5中类可见性的优点是什么.
当然也有缺点......
根据这种方法,默认语言已经在第一个表中翻译.如果用户不需要翻译,他就不会挣扎.只需连接主表,这就是全部...
产品表(InnoDB):
Obj_id(PK) name desc
--------- ------------------- ------------------
1 Million Dollar Baby Short description is...
2 Music Album Another explanation...
Run Code Online (Sandbox Code Playgroud)
翻译表(InnoDB)
trans_id (PK) Obj_id (FK) lang field trans
-------------- ----------- ------ -------- ---------------------
22 1 TR name Milyonluk Bebek
23 1 BA name Djevojka od milijun...
24 1 TR desc Kisa açiklama burada
25 1 BA desc Kratki opis je ovdje
26 2 BA name Glazba albuma
Run Code Online (Sandbox Code Playgroud)
但是当管理员想要更改默认语言时会出现问题.我有两个选择来解决这个问题:
管理员必须在项目开始时决定default_lang,如果他以后仍想更改default_lang,程序会说:Go to hell.
像第一个解决方案一样,admin必须首先决定default_lang,但是系统将能够将新的default_lang数据从转换表传输到主表(我实际上并没有这样做).
我认为我的解决方案不够好.
你是否更好地了解DEFAULT_LANG问题,无论是否改变结构(如果可能的话,不要改变结构 …
当用户登录网站时,我只保存user_id在SESSION中以便稍后检查用户是否登录.
if(!empty($_SESSION['user_id'])){
....
Run Code Online (Sandbox Code Playgroud)
这足以保障安全吗?
我想ORDER我的所有类别和子类别的层次结构:
重点是如何从MySQL订购它们(使用POSITION字段)
MySQL代码:
CREATE TABLE IF NOT EXISTS `categories` (
`category_id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
`position` smallint(5) unsigned,
`parent_id` mediumint(8) unsigned NOT NULL DEFAULT '0'
PRIMARY KEY (`category_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ;
Run Code Online (Sandbox Code Playgroud) 我想得到命令标签的值(GET,FROM,IN等)我的命令是:
// My command
$_cmd = 'GET a, b FROM p IN a and c="I am from Sarajevo" or d>1 ';
// My parser
if(preg_match_all('/(GET|FROM|IN)\s+([^\s]+)/si',$_cmd, $m))
$cmd = array_combine($m[1], $m[2]);
Run Code Online (Sandbox Code Playgroud)
输出:
Array
(
[GET] => a,
[FROM] => p
[IN] => a
[from] => Sarajevo"
)
Run Code Online (Sandbox Code Playgroud)
我正在寻找这个输出:
Array
(
[GET] => a, b
[FROM] => p
[IN] => a and c="I am from Sarajevo" or d>1
)
Run Code Online (Sandbox Code Playgroud)
如您所见,问题在于字符串中的空格和重复的命令标记(如from).那我怎么解析这个命令呢?
php ×8
mysql ×5
database ×3
class ×2
hierarchy ×2
array-merge ×1
arrays ×1
categories ×1
login ×1
multilingual ×1
object ×1
oop ×1
parsing ×1
performance ×1
private ×1
public ×1
visibility ×1