我有两个数组:
$array1 = array('a' => 1, 'b' => 2, 'c' => 3);
$array2 = array('d' => 4, 'e' => 5, 'f' => 6, 'a' => 'new value', '123' => 456);
Run Code Online (Sandbox Code Playgroud)
我想合并它们并保持按键和顺序而不是重新索引!!
怎么这样?
Array
(
[a] => new value
[b] => 2
[c] => 3
[d] => 4
[e] => 5
[f] => 6
[123] => 456
)
Run Code Online (Sandbox Code Playgroud)
我尝试使用array_merge()但它不会保留密钥:
print_r(array_merge($array1, $array2));
Array
(
[a] => 'new value'
[b] => 2
[c] => 3
[d] => 4
[e] => 5
[f] => …
Run Code Online (Sandbox Code Playgroud) 我正在尝试这些HTML
<div data-params="{a: 1, b: '2'}" id="TEST1"></div>
<div data-params='{"a": 1, "b": "2"}' id="TEST2"></div>
Run Code Online (Sandbox Code Playgroud)
然后我在jQuery中使用data()方法
$('#TEST1').data('params'); //return a string
$('#TEST2').data('params'); //return a object
Run Code Online (Sandbox Code Playgroud)
但是TEST1它不是一个返回对象,而是一个字符串,它只能返回对象TEST2.但是我想通过TEST1得到一个对象,我该怎么做?
=============
最后,我选择编写一个函数来实现自己的需求
$.fn.data2 = function(key, value)
{
if (value === undefined)
{
var data = $(this).data(key);
if (typeof(data) === 'string')
{
var _data = data.replace(/^[\s\r\n]*/g, '').replace(/[\s\r\n]*$/g, '');
if (_data.match(/\{.*\}/) || _data.match(/\[.*\]/)) {
try {
_data = (new Function( 'return ' + data ))();
if (typeof(_data) == 'object') {
$(this).data(key, _data);
data = _data;
}
} catch(ex) {} …
Run Code Online (Sandbox Code Playgroud) 以下是PHP-FPM(PHP 5.5)
php-cgi.exe -b 127.0.0.1:9000
Run Code Online (Sandbox Code Playgroud)
以下是mod_proxy_fcgi(Apache 2.4)
第一种方式
<Files ~ "\.(php|phtml)$">
SetHandler "proxy:fcgi://127.0.0.1:9000/"
</Files>
Run Code Online (Sandbox Code Playgroud)
第二种方式
<LocationMatch ^(.*\.(php|phtml))$>
ProxyPass fcgi://127.0.0.1:9000/$1
</LocationMatch>
Run Code Online (Sandbox Code Playgroud)
第三种方式
<IfModule mod_rewrite.c>
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^([^\.]+\.(php|phtml))$ fcgi://127.0.0.1:9000/$1 [P,L]
</IfModule>
Run Code Online (Sandbox Code Playgroud)
以上三种方式都会出现错误"未指定输入文件".谁知道为什么?我该怎么做才能解决这个问题?
我想创建一个类并扩展PHP类FilesystemIterator,如下面的代码所示.我定义了一个方法hasFlag()并测试它是否包含一个标志(我希望它像其他一些PHP函数,例如.glob),但结果总是与预期不同.那么我该如何解决这个问题呢?
class c extends FilesystemIterator
{
/* These are parent constants */
const CURRENT_AS_FILEINFO = 0 ;
const KEY_AS_PATHNAME = 0 ;
const CURRENT_AS_SELF = 16 ;
const CURRENT_AS_PATHNAME = 32 ;
const CURRENT_MODE_MASK = 240 ;
const KEY_AS_FILENAME = 256 ;
const NEW_CURRENT_AND_KEY = 256 ;
const FOLLOW_SYMLINKS = 512 ;
const KEY_MODE_MASK = 3840 ;
const SKIP_DOTS = 4096 ;
const UNIX_PATHS = 8192 ;
public function __construct($flags) {
$this->flags = $flags;
}
public function hasFlag($flag) {
//How …
Run Code Online (Sandbox Code Playgroud) 谁能告诉我为什么以下代码会有不同的结果?
未设置的对象属性
$s = new StdClass;
unset($s->a->b); //it is working fine
unset($s->x->y->z); //it is got an error: Attempt to modify property of non-object
Run Code Online (Sandbox Code Playgroud)
取消设置数组索引
$a = array();
unset($a[1][2]); //it is working fine
unset($a[3][4][5]); //it is working fine
Run Code Online (Sandbox Code Playgroud) 我想检测文件系统编码的操作系统是默认的,比如不同语言版本的Windows操作系统,它会使用不同的编码(iso-8859-1,ms950,big5,gb2312..etc)那么如何检测不同的操作系统在PHP编码?任何的想法?谢谢.
我有一个问题想知道答案,为什么下面的代码会打印A不是默认的?
$i = 0;
switch ($i) {
case 'A':
echo "i equals A"; //will printed it
break;
case 'B':
echo "i equals B";
break;
case 'C':
echo "i equals C";
break;
default:
echo "i equals other";
}
Run Code Online (Sandbox Code Playgroud)
谁能告诉我为什么?我真的不明白.我的PHP版本是5.2.17 Theanks.
我发现一个很奇怪的问题,问题是PHP和Javascript中的ROUND方法的计算结果不一样!?
请参见以下示例:
的PHP
echo round(175.5); // 176
echo round(-175.5); // -176
Run Code Online (Sandbox Code Playgroud)
Java脚本
console.log(Math.round(175.5)); // 176
console.log(Math.round(-175.5)); // -175 <-why not -176!!??
Run Code Online (Sandbox Code Playgroud)
有人知道为什么吗?以及如何使Javascript和PHP具有相同的结果?