有没有之间的差异isset和!empty.如果我做这个双布尔检查,这种方式是正确的还是多余的?有没有更短的方法来做同样的事情?
isset($vars[1]) AND !empty($vars[1])
Run Code Online (Sandbox Code Playgroud) 问题很混乱,但如下面的代码所述,它更加清晰:
List<List<T>> listOfList;
// add three lists of List<T> to listOfList, for example
/* listOfList = new {
{ 1, 2, 3}, // list 1 of 1, 3, and 3
{ 4, 5, 6}, // list 2
{ 7, 8, 9} // list 3
};
*/
List<T> list = null;
// how to merger all the items in listOfList to list?
// { 1, 2, 3, 4, 5, 6, 7, 8, 9 } // one list
// list = ??? …Run Code Online (Sandbox Code Playgroud) 如何在PHP名称间隔环境中检查对象的类,而不指定完整的命名空间类.
例如,假设我有一个对象库/实体/合同/名称.
以下代码不起作用,因为get_class返回完整的命名空间类.
If(get_class($object) == 'Name') {
... do this ...
}
Run Code Online (Sandbox Code Playgroud)
namespace magic关键字返回当前命名空间,如果测试对象具有另一个命名空间,则该命名空间无效.
我可以简单地用命名空间指定完整的类名,但这似乎锁定了代码的结构.如果我想动态更改名称空间,也没什么用处.
任何人都可以想到一个有效的方法来做到这一点.我猜一个选项是正则表达式.
所以当我偶然发现新的JsonSerializable接口时,我在php.net上闲逛,了解有关将PHP对象序列化为JSON的信息.它只有PHP> = 5.4,而且我在5.3.x环境中运行.
这种功能如何实现PHP <5.4?
我还没有使用JSON,但是我正在尝试在应用程序中支持API层,并且将数据对象(否则将被发送到视图)转储到JSON中将是完美的.
如果我尝试直接序列化对象,它会返回一个空的JSON字符串; 这是因为我认为json_encode()不知道该对象究竟做了什么.应予递归降低对象到一个数组,然后编码该?
$data = new Mf_Data();
$data->foo->bar['hello'] = 'world';
Run Code Online (Sandbox Code Playgroud)
echo json_encode($data) 产生一个空对象:
{}
Run Code Online (Sandbox Code Playgroud)
var_dump($data) 但是,按预期工作:
object(Mf_Data)#1 (5) {
["_values":"Mf_Data":private]=>
array(0) {
}
["_children":"Mf_Data":private]=>
array(1) {
[0]=>
array(1) {
["foo"]=>
object(Mf_Data)#2 (5) {
["_values":"Mf_Data":private]=>
array(0) {
}
["_children":"Mf_Data":private]=>
array(1) {
[0]=>
array(1) {
["bar"]=>
object(Mf_Data)#3 (5) {
["_values":"Mf_Data":private]=>
array(1) {
[0]=>
array(1) {
["hello"]=>
string(5) "world"
}
}
["_children":"Mf_Data":private]=>
array(0) …Run Code Online (Sandbox Code Playgroud) 鉴于对象的大量集合,以下是否存在性能差异?
myCollection.Contains(myElement)
Run Code Online (Sandbox Code Playgroud)
myCollection.Any(currentElement => currentElement == myElement)
Run Code Online (Sandbox Code Playgroud) 我即将在代码中创建100,000个对象.它们很小,只有2或3个属性.我将它们放在一个通用列表中,当它们存在时,我将循环它们并检查值a并可能更新值b.
将这些对象创建为类还是结构更快/更好?
编辑
一个.属性是值类型(我认为字符串除外?)
湾 他们可能(我们还不确定)有一个验证方法
编辑2
我想知道:堆上的对象和堆栈是否由垃圾收集器同等处理,或者它的工作方式有何不同?
我正在写一个RESTful API模块在PHP的应用程序,并且我对动词有点混合HEAD和OPTIONS.
OPTIONS用于检索给定资源的可用HTTP谓词?HEAD用于确定给定资源是否可用?
如果有人能澄清*这些动词,那将非常感激.
*澄清是关于重新使用HTTP谓词的RESTful API架构.我既然来实现这两个HEAD和OPTIONS应不被重新利用,而是表现可以预见任何HTTP应用程序应该.哦,我们如何在2年内成长.
我仔细研究了可能的副本,但是没有任何答案在沉没.
tl; dr:源文件和头文件是如何相关的C?项目是否在构建时隐式地整理声明/定义依赖项?
我试图理解编译器如何理解.c和.h文件之间的关系.
鉴于这些文件:
header.h:
int returnSeven(void);
Run Code Online (Sandbox Code Playgroud)
source.c:
int returnSeven(void){
return 7;
}
Run Code Online (Sandbox Code Playgroud)
main.c:
#include <stdio.h>
#include <stdlib.h>
#include "header.h"
int main(void){
printf("%d", returnSeven());
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这个混乱会编译吗?我目前正在使用Cygwin的gcc在NetBeans 7.0中完成我的工作,它可以自动执行大部分构建任务.编译项目时,涉及的项目文件是否根据声明中的隐含包含?source.cheader.h
我觉得有义务让这个问题更清楚,因为现在有一个赏金.
(另外,我很确定当calc()支持CSS3单元值时,这将是孩子的游戏,做类似的事情width: calc(25% - 5px);虽然我们可能会在那时在我们的脑海中浏览互联网)
我正在为一些共享设计要求的项目开发一个CSS框架; 即流体12列布局.使用.column百分比宽度为的浮动元素(100% / 12) x col_size,这相当容易.但是,问题在于在列之间添加固定边距(或任何形式的间距).
我最初的尝试使用了所描述的流体柱.panel,每个都嵌套了一个子.下面是HTML/CSS代码段(为简洁起见):
.column{
float: left;
display: inline-block;
}
.width-01{ width: 8.3333%; }
.width-02{ width: 16.6666%; }
.width-03{ width: 25%; }
/* etc */
.panel{
width: 100%;
padding: 5px;
box-sizing: border-box; /* so padding doesn't increase width */
}
Run Code Online (Sandbox Code Playgroud)
<div class="column width-02">
<div class="panel">Width-02</div>
</div>
<div class="column width-03">
<div class="panel">Width-03</div>
</div>
<div class="column width-02"> …Run Code Online (Sandbox Code Playgroud) 我试图array_keys()通过引用来获取关联数组的第一个键,而不创建临时变量等.不幸的是,reset()并且array_shift()通过引用获取数组参数,因此似乎都不是可行的结果.
用PHP 5.4我将在天堂; array_keys($array)[0];,但不幸的是,这当然也不是一种选择.
我可以创建一个函数来实现这个目的,但我只能想象有一些PHP的array_*函数可以在单个语句中产生所需的结果,这是我想不到的或者想出来的.
所以:
$array = array('foo' => 'bar', 'hello' => 'world');
$firstKey = assorted_functions($array); // $firstKey = 'foo'
Run Code Online (Sandbox Code Playgroud)
在我的问题中"无参考"条款的原因只是因为我认为array_keys()是必需的(如果有一种方式通过参考,请消防)
我会使用key(),但这需要一个,reset()因为我不确定此操作时指针的位置.
附录
我正在跟进我最近的一个实现:正如我在评论中提到的,它将使用相同的内存,所以如果这是一个问题,这个问题没有解决方案.
$a = range(0,99999);
var_dump(memory_get_peak_usage()); // int(8644416)
$k = array_keys($a)[0];
var_dump(memory_get_peak_usage()); // int(17168824)
Run Code Online (Sandbox Code Playgroud)
我知道这一点,因为PHP没有这样的优化功能,但认为有必要明确提及.
接受的答案的简洁性很好,如果你正在使用合理大小的数组,那么它们就可以工作了.
php ×5
c# ×3
linq ×2
api ×1
arrays ×1
benchmarking ×1
c ×1
class ×1
compilation ×1
css ×1
fluid-layout ×1
header-files ×1
html ×1
http ×1
json ×1
key ×1
lambda ×1
namespaces ×1
object ×1
performance ×1
rest ×1
struct ×1