小编mik*_*eum的帖子

测试逻辑表达式的工具

谁能推荐可用于评估逻辑表达式的软件(最好是 Mac 版)或基于 Web 的工具?

例如,我希望能够快速测试两个表达式是否如下:

$a = 'foo';
$b = 'bar';
$c = 'foo';

( !(($a == $c) && ($b == $c)) )

// and

( ($a != $c) || ($b != c$) )
Run Code Online (Sandbox Code Playgroud)

是否可互换。

而且,对于如何构建此类表达式,是否存在普遍认可的最佳实践?例如,尝试尽量减少否定、元素顺序或类似内容的使用?

有时我发现自己在这些事情上有点挣扎:)

evaluation logic boolean-logic expression truthtable

4
推荐指数
1
解决办法
1万
查看次数

PHP:序列化和反序列化包含转义字符的字符串

如何正确序列化和反序列化包含转义字符的字符串?

鉴于:

$data = "\'test\'";
$out= serialize($data);
print_r($out); // ->  s:8:"\'test\'";
Run Code Online (Sandbox Code Playgroud)

这里的问题是,unserialize不接受字符串长度:

$out = 's:8:"\'test\'"';
var_dump(unserialize($out)); // -> bool(false)
Run Code Online (Sandbox Code Playgroud)

但是如果我将字符串长度更改为6(忽略转义字符):

$out = 's:6:"\'test\'"';
var_dump(unserialize($out)); // -> string(6) "'test'"
Run Code Online (Sandbox Code Playgroud)

它正确地反序列化.

什么是处理这个问题的好方法?

php serialization escaping

4
推荐指数
2
解决办法
1万
查看次数

为什么在类的构造函数的网站中声明vars?

是否有充分的理由首先在构造函数之外声明类所使用的变量?

class foo { 

    var bar;  // why is this a good practice? (or could it be skipped?)

    public function __construct() {
        $this->foo = 'foobar';
    }
}
Run Code Online (Sandbox Code Playgroud)

我经常看到它,但我不确定它是做什么的,因为似乎可以将它们排除在外.

php oop class

3
推荐指数
1
解决办法
174
查看次数

javascript字符串正则表达式(css有效性检查+转换)

给出一个字符串,如下列之一:

'2'
'2px'
'2%'
'2em'
'2foobar'
'foobar'
Run Code Online (Sandbox Code Playgroud)

我想确定一下:

1)它是否是一个普通数字(2或2.2),如果它是圆形的(Math.floor())并且附加'px',那么,'2'或'2.2'变为'2px'

2)如果它不是普通数字,则确定它是否是有效的css值,即,如果它由一个数字(int或float)后跟'px','em'或'%'组成.我知道还有其他人,但我会支持这三个人.如果是,请离开它.

3)如果没有,看看字符串是否以数字开头(int ot float),将其四舍五入并追加'px'

4)如果没有,将其设置为空字符串

结果将是:

'2'     -> '2px'
'2.2'   -> '2px'

'2%'    -> '2%'
'2em'   -> '2em'

'2foo' -> '2px'

'foo'  -> ''
Run Code Online (Sandbox Code Playgroud)

是否可以以紧凑的方式(可能使用正则表达式),或使用现有的css验证器库进行JS?

javascript css regex validation

3
推荐指数
1
解决办法
1243
查看次数

jQuery:转义加号登录选择器

给出一个dom元素:

<li id="foo+bar"></li>
Run Code Online (Sandbox Code Playgroud)

我想解决该元素(如果可能,使用jQuery),我尝试:

$("#foo+bar")
Run Code Online (Sandbox Code Playgroud)

我也试过逃避它:

$("#foo\+bar")
Run Code Online (Sandbox Code Playgroud)

..但似乎都没有用,因为(我猜)jQuery似乎无法处理加号.不幸的是我真的没有更改id值的选项,所以:

有没有办法让jQuery获得正确的dom,或者我怎么能解决这个问题?

javascript jquery

3
推荐指数
2
解决办法
3051
查看次数

php:$ a = $ b OR $ a = $ c vs.三元

我需要将第二个变量的值分配给第三个变量,如果第一个变量是(bool)false或未定义,则需要使用第二个变量的值.

我通常使用三元表示法这样做:

$foobar = ($some_prefix_and_some_variable_name) ? $some_prefix_and_some_variable_name : $bar ; 
Run Code Online (Sandbox Code Playgroud)

但是,如果$ foo变量名称很长,有时这不是很漂亮,因为它需要在这种表示法中重复.

我现在的问题是,使用这种表示法是否同样好:

$foobar = $some_prefix_and_some_variable_name OR $foobar = $bar;
Run Code Online (Sandbox Code Playgroud)

这个符号可以与三元版本互换吗?

php boolean-logic ternary-operator variable-assignment assignment-operator

3
推荐指数
2
解决办法
1230
查看次数

不好的做法?它叫什么'

在PHP中,我正在考虑做这样的事情:

function foo(){
echo 'bar';
}

$fn = 'foo';

$fn();
Run Code Online (Sandbox Code Playgroud)

它有效,但它被认为是不好的做法?

我有一个多维数组元素,每个元素都有一个相应的函数.我想存储该函数名称,并在遍历数组时为每个元素调用相应的函数.

就像是:

function render_el1(){ echo 'et';}
function render_el2(){ echo 'to';}

$elements = array(
    'el_1' => array(
        'name' => 'Element One'
    ,   'func' => 'render_el1'
    )
,   'el_2' => array(
        'name' => 'Element Two'
    ,   'func' => 'render_el2'
    )
);


foreach($elements as $element => $options){
    $fn = $options['func'];

    echo '<h1>'.$options['name'].'</h1>';

    if (function_exists($fn)) {
        $fn();
    }
}
Run Code Online (Sandbox Code Playgroud)

对这种方法的任何评论都非常受欢迎,我也想知道在编程术语中调用这种方法的方法.

php

1
推荐指数
1
解决办法
137
查看次数