小编gvl*_*sov的帖子

如何将空数组从 HTML Form Post 提交到 PHP

我刚刚意识到 - 我不知道如何将一个空数组从 HTML 表单发布到 PHP。我可以发布大小为 1 或更大的数组,但是有什么方法可以发布一个空数组吗?我的意思是,你可以有:

<form>
  <input type='hidden' name='items[0]' value='Value Item 1' />
 <input type='hidden' name='items[1]' value='Value Item 2' />
</form>
Run Code Online (Sandbox Code Playgroud)

它给出了一个大小为 2: 的数组:$_POST['items'] === ["Value Item 1", "Value Item 2"]但是有没有办法将一个空数组作为 $_POST 键的值传递?也就是说,我知道我可以 make $POST['items'] === '',但是一个空数组 ( []) ?

具体用例是:我有一个一对多的形式,比如一个带有物品的购物车。该表单由数据库中的现有“项目”填充,但可以添加或删除项目,这些项目位于项目数组中。项目数组被索引 - 如果添加新项目,它们将保存到数据库中;如果项目被删除,它们将从数组中删除并从数据库中删除。

所有这些都可以正常工作 - 除非从表单中删除所有项目,在这种情况下不会传递“项目”键。

我发现了一个非常好的解决方法,即在表单顶部放置一个隐藏的输入“items”=null,因此即使没有项目也会传递键,然后在 PHP 中,如果“items”键是'' 我将它转换为一个空数组 - 所以一切正常。我只是在理论上很好奇是否可以发布一个空数组。不知道为什么这被认为是不合适的 - 希望解释有所帮助。

至于为什么我要检查密钥是否存在——我使用相同的通用代码来处理来自不同表单的输入——所以,如果用户在没有指定商品的情况下更改了购物车上的地址,则不应删除这些商品只是因为没有“项目”键。

为了进一步澄清,我实际上并不是在构建“购物车”——我正在构建一个抽象框架,该框架支持将一对多 POST 映射到 Eloquent 一对多关系。POST 中具有空值的任何字段都将从对象中删除 - 但不在 POST 中的任何字段/键不会在基础数据库中删除或修改。

重点是,我正在构建一个通用工具集 - 不仅仅是试图让一个函数来处理一种表单。

html php arrays post

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

检查数组中的唯一值和非唯一值

我们希望得到完整信息的结果,例如Unique = Value1,Value2.重复= Value1.我们有一个数组,下面是一个示例数组.

$array1 = array('John Wilkins', 'Poul Warner', 'Rodger Smith', 'David Bentham', 'David Wilkins', 'Brian Smith', 'David Warner', 'John Wilkins', 'Poul Warner', 'David Wilkins', 'Brian Smith', 'David Warner', 'John Wilkins', 'Poul Warner', 'David Bentham', 'David Wilkins');
Run Code Online (Sandbox Code Playgroud)

我们将使用此函数和数值.我们想以这种格式打印结果.

John Wilkins | Duplicate
Poul Warner  | Duplicate
Rodger Smith  | Unique
Run Code Online (Sandbox Code Playgroud)

等等.

php arrays algorithm

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

有没有办法调整vim中折叠线的格式?

现在我折叠的线看起来像这样:

+-- 123 lines: doSomeStuff();--------------------------
+-- 345 lines: doSomeOtherStuff();---------------------
Run Code Online (Sandbox Code Playgroud)

我想删除一行之前的所有内容(+ - xxx行:),使其更像Notepad ++/Eclipse visuals方式 - 现在它太难读了,我其实并不在乎我有多少行有一定的折叠:)所以有任何调整折叠线格式的命令吗?

vim folding

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

在这种情况下,有没有办法通过Tab按钮进行bash完成?

有一种方法可以在bash中运行命令,如下所示:

echo ls | bash
Run Code Online (Sandbox Code Playgroud)

我需要对bash完成进行单元测试,如果有一种方法可以通过这种方式将按钮传递给Tab以完成命令,那我就很烦人了,如下所示:

# This doesn't work, but I think you get the idea
echo chromi$'\t' | bash
Run Code Online (Sandbox Code Playgroud)

那可能吗?或者也许你可以建议另一种单元测试bash完成的方法?

bash bash-completion

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

Java Collection <Generic Type>排序没有集合

我真的被困在学校的任务上.我们正在学习通用类型,也许这不仅是我完全理解它们,而是作为我们必须实现的第一个方法之一的一部分:

我们有:

public static <T> T min(Collection<T> c, Comparator<T> comp) {
        return null
}
Run Code Online (Sandbox Code Playgroud)

和要求:

Collection c供应的定义中选择最小值Comparator comp.IllegalArgumentException 如果c或comp为null,则此方法抛出if,如果c为空,则抛出NoSuchElementExceptionif.此方法不会更改Collection c.

所以我到了这里:

public static <T> T min(Collection<T> c, Comparator<T> comp)
            throws IllegalArgumentException, NoSuchElementException {
        if (c != null && comp != null) {
            if (!c.isEmpty()) {

            } else {
                throw new NoSuchElementException();
            }
        } else {
            throw new IllegalArgumentException();
        }
    }
Run Code Online (Sandbox Code Playgroud)

我们必须使用比较器排序,但不能使用Collections类.我真的需要一些指导才能开始,我不是要求你为我做任务!

java collections comparator

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

如何搜索纯文本而不是正则表达式?

例如,我想删除直到下一个</p>标记.干

d/</p>
Run Code Online (Sandbox Code Playgroud)

因为</p>被视为正则表达式而无法工作.我能以某种方式指定纯文本搜索模式吗?

vim

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

Yii2 - 在视图的index.php中渲染_search.php文件

我在Yii2中有一个名为eventos的视图文件夹.此视图是图库.

_view2.php用于向一般公众显示图像.它运作得很好.

但现在我想在_view2.php中创建一个globalsearch输入文本.

我已经有一个GridView小部件用于显示图像,但我不想使用$ searchmodel框,所以我禁用它们.

我想要的是在_view2.php文件中只使用一个输入字段呈现_search.php文件

我的问题是在_view2.php文件中渲染_search.php.

这是_view2.php的代码:

<?= GridView::widget([
    'dataProvider' => $dataProvider,
    'filterModel' => $searchModel,
    'showOnEmpty'=>false,
    'summary'=>'',
    'showFooter'=>false,
    'showHeader' => false,
    'bordered' => false,
    'striped' => false,
    'hover' => true,
    //'options' => ['class' => 'grid-view'],
    //'layout' => "{summary}\n{items}\n{pager}",

    'columns' => [
        ['class' => 'yii\grid\SerialColumn'],

        //'id',
        //'nome',
        'descricao',
        'data',
        // No model -> getImageurl()
        [
            'label' => '',
            'format' => 'raw',
            'value'=> function($data) { return Html::a(Html::img($data->imageurl, ['width'=>'300', 'height' => "170"]), $data->foto); },
        ],
        [
            'label' => '',
            'format' => 'raw', …
Run Code Online (Sandbox Code Playgroud)

php render view yii2

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

Kotlin内联文档的正确名称是什么?

由于KDoc文档生成引擎被放弃以支持Dokka,Kotlin文档应该被称为"KDoc评论",还是"Dokka评论"?

kotlin kdoc kotlin-dokka

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

如何重置 vue-infinite-loading 元素?

我有一份展品清单。用户可以添加展品。当用户添加展品时,vue-infinite-loading不会拾取展品数量的变化,因此即使还有更多要显示,它也会显示“列表结束”。

这是一个代码笔注意:我无法在沙箱中使用 vue-infinite-loading,但它绝对可以在我的网站上运行。

这是代码:

HTML:

<div id="app">
  <button @click="addTenRows()">Add 10 Rows</button>
  <table cellpadding="10">
    <tr><th>id</th><th>Name</th><th>Description</th></tr>
    <tr v-for="exhibit in exhibits.resultsMap">
      <td>{{exhibit.id}}</td>
      <td>{{exhibit.name}}</td>
      <td>{{exhibit.desc}}</td>
    </tr>
  </table>
  <infinite-loading 
      :distance="10" 
      @infinite="loadMore" 
      ref="infiniteLoading" 
      identifier="exhibitLoader">
      <span slot="no-more">
        <h5>
          <i class="fa fa-check-circle"></i> End of Results
          <span v-if="exhibits.results">
              : <strong>{{exhibits.meta.totalRecords}} shown</strong>
          </span>
        </h5>
      </span>
  </infinite-loading>
</div>
Run Code Online (Sandbox Code Playgroud)

JS:

new Vue({
  el: '#app',
  methods: {
    addTenRows(){
      this.exhibits.meta.totalRecords += 5;
    },
    loadMore(){
      this.exhibits.results.push('16');
      this.exhibits.results.push('17');
      this.exhibits.results.push('18');
      this.exhibits.results.push('19');
      this.exhibits.results.push('20');

      this.exhibits.resultsMap[ '16' ] = { 'id':'16', 'name': 'STR-16', desc: 'Exhibit …
Run Code Online (Sandbox Code Playgroud)

vue.js vuejs2 vue-infinite-loading

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

需要一个脚本来模拟<cr>按插入模式

我正在编写一个在某些条件下自动插入一些文本的函数.当我尝试模仿Enter按时,我陷入了困境.我想出了这个(显而易见的)代码:

execute "normal! a\<cr>"
Run Code Online (Sandbox Code Playgroud)

问题是它打破了自动注册.例如,我有一个像这样的文本文件(|是游标):

if (condition) {
    action();|
Run Code Online (Sandbox Code Playgroud)

所以我跑了execute "normal! a\<cr>".当我需要这个时:

if (condition) {
    action();
    |
Run Code Online (Sandbox Code Playgroud)

它的行为如下:

if (condition) {
    action();
|
Run Code Online (Sandbox Code Playgroud)

当然,autoindent开启了.我究竟做错了什么?

vim

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