小编dna*_*irl的帖子

PHP:一种对循环进行排序并在查询后排除某些条目的方法

我正在创建一个显示数据库表中项目的系统,具体取决于它们是否可用.

我有两张桌子:

预订电话:

----------------------------------------------------------------------
| ResID | CarID | UserID | startTime | startDate | endTime | endDate  |
----------------------------------------------------------------------
|   1   |   4   |    4   | 13:00:00  |2013-04-21 |13:00:00 |2013-04-29|
Run Code Online (Sandbox Code Playgroud)

和汽车:

-------------------------------------------
| CarID  |  make | model | serial | image |
-------------------------------------------
|   1    | Honda | civic | ky675  | 1.png | 
Run Code Online (Sandbox Code Playgroud)

因此,当用户访问页面时,他们输入开始日期和结束日期,然后在运行查询后显示汽车列表以检查汽车是否在该日期可用.

所以我提出了这个问题.

$carstring = mysql_query("SELECT * FROM cars 
                            {$statement} 
                            AND deleted = 'no' 
                            AND carID NOT IN (
                              SELECT carID FROM reservations 
                                WHERE startDate …
Run Code Online (Sandbox Code Playgroud)

php mysql

6
推荐指数
2
解决办法
778
查看次数

Symfony2 Sonata Media Bundle自定义图像裁剪

在剪裁/调整上传图像的大小时,Sonata Media似乎只有两种策略:Sonata\MediaBundle\Resizer\SimpleResizer和Sonata\MediaBundle\Resizer\SquareResizer.这两种策略都是自动的,这意味着用户对于如何调整图像大小/缩小图像没有发言权.

我想给用户一个选项来选择更相关的图像部分,类似于GenemuFormBundle使用的jQuery Image Cropper库,但我甚至不知道从哪里开始.我是否需要创建自己的Admin类而不是使用Sonata\MediaBundle\Admin\BaseMediaAdmin?有没有人写过我可以使用的捆绑包?你经常如何管理你的画廊?

在此输入图像描述

php jquery symfony sonata-admin sonata-media-bundle

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

未列出的保留字?

我今天在一些PHP代码中遇到了一个非常奇怪的行为.我们有一个处理文件的类.它是这样的:

class AFile {

 //usual constructor, set and get functions, etc.
 //...

  public function save() {
    //do some validation
    //...

    if($this->upload()) { //save the file to disk
      $this->update_db(); //never reached this line
    }
  }

  private function upload() {
     //save the file to disk
     //...
     return ($success) ? true : false;
  }
}
Run Code Online (Sandbox Code Playgroud)

它看起来很正常,但是$ this-> upload()函数永远不会返回NULL.我们检查了正确的函数是否正在运行.我们在返回之前回复了它的返回值.我们只尝试返回一个真值或一个字符串.一切都正常.但$ this-> upload仍然评估为NULL.此外,日志中没有任何内容,ERROR_ALL已打开.

在愤怒中,我们将函数名称更改为foo_upload.突然间一切都奏效了."upload"不在PHP保留字列表中.任何人都有任何想法为什么名为"上传"的类函数会失败?

php return-value

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

xsl:variable包含节点集。如何输出变量的第n个节点?

我正在转换XML文档。有一个属性@prettydate,该字符串是类似于“ 2010年5月7日,星期五”的字符串。我想拆分该字符串并添加指向月份和年份的链接。我正在使用该exslt:strings模块,并且可以添加任何其他必要的EXSLT模块。

到目前为止,这是我的代码:

<xsl:template match="//calendar">
    <xsl:variable name="prettyparts">
        <xsl:value-of select="str:split(@prettydate,', ')"/>
    </xsl:variable>

    <table class='day'>
        <thead>
            <caption><xsl:value-of select="$prettyparts[1]"/>, 
                    <a>
                        <xsl:attribute name='href'><xsl:value-of select="$baseref"/>?date=<xsl:value-of select="@highlight"/>&amp;per=m</xsl:attribute>
                        <xsl:value-of select='$prettyparts[2]'/>
                    </a> 
                    <xsl:value-of select='$prettyparts[3]'/>,  
                    <a>
                        <xsl:attribute name='href'><xsl:value-of select="$baseref"/>?date=<xsl:value-of select="@highlight"/>&amp;per=y</xsl:attribute>
                        <xsl:value-of select='$prettyparts[4]'/>
                    </a> 
            </caption>
<!--etcetera-->
Run Code Online (Sandbox Code Playgroud)

我已经通过运行$ prettyparts验证了<xml:for-each/>我正在获得预期的节点集:

<token>Friday</token>
<token>May</token>
<token>7</token>
<token>2010</token>
Run Code Online (Sandbox Code Playgroud)

但是,无论我尝试以哪种方式<token>直接引用某个特定对象(而不是在foreach中),我都不会得到与无效类型有关的任何错误或各种错误。这是我尝试过的一些语法:

<xsl:value-of select="$prettyparts[2]"/>
<xsl:value-of select="$prettyparts/token[2]"/>
<xsl:value-of select="exsl:node-set($prettyparts/token[2])"/>
<xsl:value-of select="exsl:node-set($prettyparts/token)[2]"/>
Run Code Online (Sandbox Code Playgroud)

知道表达应该是什么吗?

预计到达时间:感谢@DevNull的建议,正确的表达为:

<xsl:value-of select="exsl:node-set($prettyparts)[position()=2]"/>
Run Code Online (Sandbox Code Playgroud)

并且,我必须以这种方式设置变量:

<xsl:variable name="prettyparts" select="str:split(@prettydate,', ')" />
Run Code Online (Sandbox Code Playgroud)

xslt split exslt nodes

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

阻止print()输出R中的列表索引

我有一个包含六个图的列表,如下所示:

voi=c('inadist','smldist','lardist')

plist <- llply(voi, 
    function(v,df,s) {
        list(   
            assign(
                paste(v,'.violin'), 
                bwplot(groupname~df[,which(colnames(df)==v)]|fCycle*fPhase, 
                    data=df, 
                    groups=groupname, col=rainbow(1), box.ratio=3,
                    main=paste('Distribution of ', v, ' by Treatment and Cycle'),
                    sub=s, xlab=v, panel=panel.violin)),
            assign(
                paste(v,'.hexbin'),
                hexbinplot(df[,which(colnames(df)==v)]~starttime|groupname, 
                    data=df, xlab='Time(s)',main= paste('Distribution of ',v,' by Treatment'),
                    sub=s,ylab=v, aspect=0.5, colramp=redgrad.pal, layout=c(2,4)))

            )
    },data,meta$exp_name)
Run Code Online (Sandbox Code Playgroud)

如果我打印列表,print(plist)图表将输出到图形设备,然后将索引输出到控制台,结果如下:

[[1]]
[[1]][[1]]

[[1]][[2]]


[[2]]
[[2]][[1]]

[[2]][[2]]


[[3]]
[[3]][[1]]

[[3]][[2]]
Run Code Online (Sandbox Code Playgroud)

因为我正在编写一个webapp,我需要非常严格地控制控制台输出.到目前为止,我可以输出绘图而不输出索引的唯一方法是这样的:

for(p in plist) 
    for(i in p) 
        print(i)
Run Code Online (Sandbox Code Playgroud)

是否有更有效的方式来获得我需要的东西?

printing loops r list

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

比较对象数组

我正在寻找一种比较PHP中对象数组的简洁方法.我知道我可以检查相同大小的数组,然后遍历一个数组,寻找第二个数组中的每个对象,但我认为使用一个或多个数组比较函数会更好.

我已经测试了几个对象数组,我遇到的主要问题是数组比较函数坚持比较元素strings,如下所示:

class Foo{
    public $pk=NULL;
    function __construct($pk){
        $this->pk=$pk;
    }

    function __toString(){
        return (string)$this->pk;//even an integer must be cast or array_intersect fails
    }
}

for($i=1;$i<7;$i++){
    $arr1[]=new Foo($i);
}
for($i=2;$i<5;$i++){
    $arr2[]=new Foo($i);
}

$int=array_intersect($arr1,$arr2);
print_r($int);
Run Code Online (Sandbox Code Playgroud)

输出

Array
(
[1] => Foo Object
    (
        [pk] => 2
    )

[2] => Foo Object
    (
        [pk] => 3
    )

[3] => Foo Object
    (
        [pk] => 4
    )
Run Code Online (Sandbox Code Playgroud)

)

如果对象具有__toString()方法并且这些__toString()方法返回唯一标识符并且从不返回,那就没问题''.

但是,如果不是这种情况会发生什么,例如对于这样的对象:

class Bar{
    public $pk=NULL;
    function …
Run Code Online (Sandbox Code Playgroud)

php arrays object

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

为已过时的对象集合选择数据结构

我正在尝试设计一个PHP对象(称之为Incident_Collection),它将包含其他对象的集合,每个对象都实现一个Incident接口.

<?php
class Foo implements Incident {
  protected $incident_date; //DateTime object
  protected $prop1;
  protected $prop2;
  //etc

  public function when(){ //required by Incident interface
    return $this->incident_date;
  }

}
?>
Run Code Online (Sandbox Code Playgroud)

起初我想我只是创建我的Incident_Collection工具IteratorAggregate并将Incident对象存储在集合的数组属性中:

<?php
class Incident_Collection implements IteratorAggregate {
  protected $collection=array();

  public function getIterator(){
    return new ArrayIterator($this->collection);    
  }

  public function sort(){
     //sort by $incident->when() values in $this->collection
  }

  /*also __get($var), __set($var,$value), add(Incident $object), remove(Incident $object) and other functions*/
}
?>
Run Code Online (Sandbox Code Playgroud)

但是因为Incident对象具有自然顺序,我认为可能扩展其中一个SPL数据结构可能更合适/更有效.但是哪一个? …

php spl date data-structures

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

代码是否符合Liskov的替代原则?

我在升级之前在PHP5.4上测试我现有的代码.我发现以下代码不再有效,因为PHP已经收紧了它的继承模型.由于这种紧缩,我一直在阅读有关SOLID,特别是Liskov的替代原则(我是一名自学成才的程序员),这样我就可以改进我的代码,而不会受到未来"拧紧"的影响.

interface IComparable {
    public function equals(self $other);
}

class A implements IComparable{
    protected $var;

    public function __construct($v){
        $this->var=$v;
    }

    public function equals(self $other){
        return ($this->var == $other->var) ? 'equal' : 'different';
    }
}

$a1= new A(7);
$a2= new A(5);
$a3= new A(5);

echo $a1->equals($a2),"\n";
echo $a2->equals($a3),"\n";
Run Code Online (Sandbox Code Playgroud)

php 5.3结果:

  • 不同
  • 等于

php 5.4结果:

PHP致命错误:A :: equals()的声明必须与IComparable :: equals兼容(IComparable $ other)

如果我以这种方式编写代码,我可以避免php5.4错误:

interface IComparable {
    public function equals($other);
}

class A implements IComparable{
    protected $var;

    public function …
Run Code Online (Sandbox Code Playgroud)

php liskov-substitution-principle

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

我如何验证我是否在jSignature面板中绘制了一些东西?

jSignature有画布,它有一个类.如何验证jSignature我是否画了一些东西?

我为click事件添加了一个绑定.

$sigdiv.bind('click', function(e) {
    $("#num_strok").val(parseInt($("#num_strok").val()) + 1);
});
Run Code Online (Sandbox Code Playgroud)

问题是我点击某个角落也会num_strock增加.对于一些拖累它不会增加.

我曾在谷歌尝试过是否有内置isEmpty功能.但我还没有找到任何东西.

javascript jquery

5
推荐指数
3
解决办法
8342
查看次数

R Shiny - 迭代 ShinyUI 输出元素

我想知道是否可以迭代 ShinyUI 输出元素

在我的 Shiny 应用程序中,我有一些uiOutput以非常相似的方式呈现的元素。我想在循环中引用它们(渲染它们),例如使用它们的id. 我想做这样的事情:

for(element.id in uiOutput.ids){ 
  output[element.id] <- renderUI({...})
}
Run Code Online (Sandbox Code Playgroud)

当然,这样的代码会导致以下错误:

Error in `[<-.shinyoutput`(`*tmp*`, "some_id", value = function (): 
Single-bracket indexing of shinyoutput object is not allowed.
Run Code Online (Sandbox Code Playgroud)

因为引用 ShinyUI 输出元素的正确方法(我的意思是:我知道的唯一方法)是:

output$some_id <- renderUI({...})
Run Code Online (Sandbox Code Playgroud)

谢谢您的任何建议!

r shiny

5
推荐指数
0
解决办法
1925
查看次数