小编Jah*_*hid的帖子

删除PHP中的JSON数组元素,并重新编码为JSON

function deleteNews($selected) {
    $file = file_get_contents('news.json', true);

    $data=json_decode($file,true);
    unset($file);

foreach($selected as $index){
 unset($data[$index]);
 }


  $result=json_encode($data);

  file_put_contents('news.json', $result);
    echo $result;
    unset($result);
    $url="./deleteNews.php";
   //redirect($url);
    }
Run Code Online (Sandbox Code Playgroud)

上述函数应该从JSON中删除条目,如:

[
     {
           "dummy":"dummy",
           "dummy1":"dumy"
      },
      {
           "dummy":"dummy1",
           "dummy1":"dummy"
      }
]
Run Code Online (Sandbox Code Playgroud)

但最后该函数在JSON中插入数字索引,这是不可取的.

结果是这样的

[
    "0":
       {
          "dummy":"dummy",
          "dummy1":"dumy"
       },
     "1":
       {
           "dummy":"dummy1",
           "dummy1":"dummy"
       }
 ]
Run Code Online (Sandbox Code Playgroud)

如何从中获取原始JSON格式?我不想要0 1 2索引部分.

NB:就是foreach这样做.如果没有foreach,则按预期创建JSON.

php json

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

unix awk列等于变量

我想打印两列等于变量的行,例如输入:

2607s1  NC_000067.6 95.92   49  1   1   3   50  1e-14   84.2
2607s1  NC_000067.6 97.73   44  1   0   7   50  4e-14   84.2
2607s1  NC_000067.6 97.67   43  1   0   8   50  1e-13   75.0
Run Code Online (Sandbox Code Playgroud)

和第一列和最后一列的变量:

a="2607s1"; b="84.2"
Run Code Online (Sandbox Code Playgroud)

并使用awk命令,输出:

2607s1  NC_000067.6 95.92   49  1   1   3   50  1e-14   84.2
2607s1  NC_000067.6 97.73   44  1   0   7   50  4e-14   84.2
Run Code Online (Sandbox Code Playgroud)

我尝试了以下但不工作:

awk -v '$1==$a' && '$10==$b' test_file
cat test_file|awk '$1=="($a)" && $10=="($b)"'
cat test_file|awk '$1==($a) && $10==($b)'
cat test_file|awk '$1=="$a" && $10=="$b"'
Run Code Online (Sandbox Code Playgroud)

而且,我在一个while循环中运行它,所以$a并且 …

unix variables bash awk while-loop

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

如何在Shell脚本中为"for"语句使用2变量

我想用f和v作变量.f*.mkv和v*.mp3

for f in *.mkv v in *.mp3; do 
   ffmpeg -i "$f" -i "$v" -vcodec copy merge_"$f"
done
Run Code Online (Sandbox Code Playgroud)

我不知道如何正确地做到这一点.我仍然是bash shell脚本的新手.

我希望有一个人可以帮助我.

bash shell multimedia ffmpeg video-editing

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

在if语句中使用grep

我是shell脚本的初学者,需要一个脚本来检查一个进程的状态,并在输出时"输出","关闭时"输出"不运行".

我尝试了下面的一个,但它不起作用:

if [ -s `/opt/reds/recycle.sh status | grep "pid"` ];
then
    echo "running"
else
    echo "not running"
fi
Run Code Online (Sandbox Code Playgroud)

有人可以帮帮我吗?

shell grep if-statement

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

单行打印“grep -o”输出

如何grep -o在一行中打印输出?我正在尝试打印:

$ echo "Hello Guys!" |grep -E '[A-Z]'
Hello Guys!
$ echo "Hello Guys!" |grep -Eo '[A-Z]' <----Multiple lines
H
G
$ echo "Hello Guys!" |grep -Eo '[A-Z]'
Run Code Online (Sandbox Code Playgroud)

期望的输出:

HG
Run Code Online (Sandbox Code Playgroud)

我可以使用以下命令廉价地实现它,但问题是字母数(在这种情况下为 3)可能是动态的。所以不能使用这种方法。

echo "HEllo Guys!" |grep -oE  '[A-Z]' |xargs -L3 |sed 's/ //g'
HEG
Run Code Online (Sandbox Code Playgroud)

linux bash grep sed xargs

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

如何评估变量bash脚本中的变量?

我有一堆像这样的数组:

array1=("A" "B")
array2=("C" "D")
array3=("E" "F" "G")
Run Code Online (Sandbox Code Playgroud)

我想循环遍历数组,以及每个数组中的元素.以下是我试图完成此任务的方法:

for i in `seq 1 2`
do 
    for elm in ${array${i}[@]}
    do
        echo "the element in array$i is $elm" 
    done
done
Run Code Online (Sandbox Code Playgroud)

但是,这给了我:

./new_test.sh: line 6: ${array${i}[@]}: bad substitution
Run Code Online (Sandbox Code Playgroud)

我有点知道我正在做的事情是错的,因为我不想让第一个$评估${i}它的内部.

我该如何防止这种情况?

macos bash shell bsd

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

如何对变量进行大括号扩展?

请考虑以下脚本:

#! /bin/bash -e

echo {foo,bar}
EX={foo,bar}
echo ${EX}
Run Code Online (Sandbox Code Playgroud)

该脚本的输出是:

foo bar
{foo,bar}
Run Code Online (Sandbox Code Playgroud)

echo想要执行大括号扩展的命令${EX}.因此,我希望看到一个输出

foo bar
foo bar
Run Code Online (Sandbox Code Playgroud)

我想创建一个脚本,用户可以在其中提供带有大括号的路径,其中复制了每个扩展版本.

像这样的东西:

#! /bin/bash -e

$SOURCES=$1
$TARGET=$2

cp -r ${SOURCES} ${TARGET}
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

bash shell brace-expansion

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

在Google Cardboard中播放视频

我正在考虑在Google Cardboard中播放视频.我已经创建了2个纸板视图,并且能够在这些视图中显示2个图像.

但我无法在这些视图中播放视频.此外,我没有任何例外.

这里的纸板样本显示了使用open-gl的寻宝游戏,但与播放视频无关.

任何帮助,将不胜感激.

video android google-cardboard

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

需要在c ++中定义所有可用的构造函数表单

我有一个这样的课:

class A{
    private:
        init(const std::string& s=""){/*do something*/}
    public:
        A(){init();}
        A(const A&){init();}
        A(const std::string& s){init(s);}
};
Run Code Online (Sandbox Code Playgroud)

它是否涵盖了可能被称为构造函数的所有形式?

我要做的是,任何对象创建必须首先调用该init()函数,即我需要定义可以隐式或显式调用的所有构造函数.

c++ c++11

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

/ usr/bin/find:for循环bash脚本中的参数列表太长

我有这样一个bash脚本.我想将目录下的gzip所有.ppm文件转到另一个目录.出于这个原因,我写了这样一个bash脚本:

cd /export/students/sait/12-may
for next_file in  $(find . -type f  ! -name *.ppm )
do
/bin/gzip -f -c $next_file > /export/students/sait/12-may-yedek/$next_file.gz
done
Run Code Online (Sandbox Code Playgroud)

当我执行这个脚本时,我得到这样的错误:

/usr/bin/find: Argument list too long
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个问题?

linux bash glob find quoting

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