分类 默认分类 下的文章

对于选项的答案为是/否的选项, 大家是会用一个checkbox还是两个radio框? 哪个会更合理? 为什么?
最近看到一篇文章是关于这个问题的,发现挺有意思的.为此做个总结记录.有人在Twitter上发布该问题的讨论,摘选了些比较有用的观点. 相信在看过这些别人的观点后, 你会更清楚在什么情况下使用哪种类会更加合适.以下为一些用户的评论观点:
  • 对于checkbox, 如果他没被选中, 那么有两种可能:一个是用户就选择否,一个是用户落了该选项. 而对于radio,否就是意味着用户选择了否
  • 如果我无法推断哪个是默认值时,我会使用2个radio.比如问题"你是中国公民吗?",此时提供是/否单选框,而不是一个checkbox
  • 看措辞: checkbox - 在陈述语句中(如'我已同意条款')
    radio - 在疑问句中(如'你阅读并同意条款了吗?')
  • radio相当于是一个必选项, 需要经过认真思考, 而checkbox更像是一个可选项,用户可以跳过不用很仔细在意.


参考文章(https://www.sarasoueidan.com/blog/one-checkbox-or-two-radio-buttons/)

怎么最简单,快速将多维数组展开平铺为一维数组? 以下为博主的总结供参考:分为平铺展开的深度为2和全部平铺展开的:

先假设有个待展开数组:
$arr = [
    'a' => [
        'a1' => 'nice100.net',
        'a2' => 'good',
    ],
    'b' => [
        'b1' => [
            'b11' => 'nice',
            'b12' => 'like',
        ]
    ]
];
  • 平铺展开的深度为2:

    //方法一
    $result = call_user_func_array('array_merge', $arr);
    //方法二(会更快)
    $result = array_merge(...array_values($arr));
    //结果输出
    Array
    (
      [a1] => nice100.net
      [a2] => good
      [b1] => Array
          (
              [b11] => nice
              [b12] => like
          )
    
    )
    
  • 全部平铺展开

    //如果要全部平铺展开,那么对于多维数组, array_merge函数就不能满足了,需要办理递归
    $re = [];
    array_walk_recursive($arr, function ($v, $k) use (&$re) {
      $re[$k] = $v;
    }, $re);
    //输入结果,注意如果存在相同的key,那么后者会覆盖前者
    Array
    (
      [a1] => nice100.net
      [a2] => good
      [b11] => nice
      [b12] => like
    )

首先说下博主出现这个报错的情形:自己使用是谷歌浏览器,访问谷歌网址, 浏览器使用了科学上网插件. 如果和我的情形一样,那么博主的办法可参考下.
经过排查发现是dns污染的问题.以下为排查教程;

  • 先确认下科学上网的插件是否正常工作
    比较简单的一个办法就是,点击该插件然后点击访问该插件的谷歌应用商店,如果能访问那么说明你的科学上网没问题, 继续下一步.
  • 修正自己电脑上的dns地址
    查看下自己电脑当前的dns服务器用的ip是多少(怎么查看因为操作系统方法也不同,故不做详述自行搜索), 建议更换为114.114.114.114 和 223.6.6.6 这两个都是国内比较大的dns服务,后者为阿里的. 更改保存后, 然后刷新下本机的dns(刷新也请自行搜索)
  • 最后但同样重要,重启下浏览器
    这里说下遇到的一个坑, 在开始遇到报错时, 我也绝得是dns的,所以一开始就dns调整为合适了,然后直接再重试访问,当然还是访问失败, 就以为不是dns的问题,即使我也想到清理了下网页缓存, 但还是同样的报错, 最后试了一大圈,才发现浏览器重启了,就能正常访问, 所以建议浏览器最好重启下再重新访问试下. 就因为没重启才导致这个小问题没能快速解决.

    第二编辑

  • 最近发现好像有些情况以上步骤也无法解决. 最后发现根本原因是科学上网插件本身有问题.用的是谷歌访问助手浏览器插件(Ghelper),发现如果换成其他科学上网插件,dns也不用刷新,就可以成功科学上网.所以如果你在尝试刷新dns后还是不能科学上网(如果不想翻墙,关闭翻墙软件就能解决这个报错了), 那么你需要怀疑下你的科学上网梯子是不是坏了(谷歌访问助手最近就是时不时抽疯).igg谷歌访问助手,亲测目前能用,有需要的也可尝试下.

复制以下代码到console控制中, 并回车执行, 然后只有使用 console.save(变量名) 命令轻松的将控制台中的变量下载到本地来. 

(function(console){
    console.save = function(data, filename){

    if(!data) {
        console.error('Console.save: No data')
        return;
    }

    if(!filename) filename = 'console.json'

    if(typeof data === "object"){
        data = JSON.stringify(data, undefined, 4)
    }

    var blob = new Blob([data], {type: 'text/json'}),
        e    = document.createEvent('MouseEvents'),
        a    = document.createElement('a')

    a.download = filename
    a.href = window.URL.createObjectURL(blob)
    a.dataset.downloadurl =  ['text/json', a.download, a.href].join(':')
    e.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null)
    a.dispatchEvent(e)
 }
})(console)

其实在console控制台,也可以使用copy(变量名)来复制变量到剪切板上.copy命令也很方便

注意:
有些情况下使用copy命令复制数组变量总是得到空数组, 那么建议使用对象类型, 使用对象类型一定是复制出来的.