我有一个PHP数据结构,我想要JSON编码.它可以包含许多空数组,其中一些需要编码为数组,其中一些需要编码为对象.
例如,假设我有这样的数据结构:
$foo = array(
"bar1" => array(), // Should be encoded as an object
"bar2" => array() // Should be encoded as an array
);
Run Code Online (Sandbox Code Playgroud)
我想把它编码成:
{
"bar1": {},
"bar2": []
}
Run Code Online (Sandbox Code Playgroud)
但是,如果我使用json_encode($foo, JSON_FORCE_OBJECT)
我会得到对象:
{
"bar1": {},
"bar2": {}
}
Run Code Online (Sandbox Code Playgroud)
如果我使用json_encode($foo)
我会得到数组:
{
"bar1": [],
"bar2": []
}
Run Code Online (Sandbox Code Playgroud)
有没有办法编码数据(或定义数组),所以我得到混合数组和对象?
玩指针C
很有趣(不是真的).
我有几个字符串数组我想以简单的方式声明,最好是:
arrayOfStrings1 = {"word1", "word2", etc. };
arrayOfStrings2 = {"anotherword1", "anotherword2", etc. };
arrayOfStrings3 = etc.
etc.
Run Code Online (Sandbox Code Playgroud)
类似于翻译数组的东西(但不完全),所以我希望能够在运行时间间隔这些.为此,我想要一个pointerToArrayOfStrings
我可以交换的指针:
pointerToArrayOfStrings = arrayOfStrings1;
doStuff();
pointerToArrayOfStrings = arrayOfStrings2;
doSomeOtherStuff();
Run Code Online (Sandbox Code Playgroud)
在我对字符串数组和指向这些字符串的指针的天真理解中,这就是我所尝试的:
// Danish transforms
const unsigned char* da_DK[] = {"b","bb","c","c","cc","d","dd","e","f","ff","g","gg","h","hh","j","j","jj","k","k","kk","l","l","l","l","ll","m","mm","n","n","nn","p","pp","r","r","r","rr","s","s","s","ss","t","t","tt","v","v","vv","æ"};
// British english transforms
const unsigned char* en_GB[] = {"a","a","a","a","a","a","a","a","a","a","a","a","a","age","ai","aj","ay","b","cial","cian","cian","dj","dsj","ea","ee","ege","ei","ei","eigh","eigh","f","f","f","g","g","gs","i","i","i","j","j","k","ks","kw","l","m","n","n","o","r","s","s","sd","sdr","sion","sion","sj","sj","tial","tion","tion","tj","u","u","u","u","w","ye","ye","z"};
// More languages....
const unsigned char** laguageStrings;
// Assign language
if (streq(language, "da-DK")){
laguageStrings= da_DK;
}
else if (streq(language, "en-GB")){
laguageStrings= en_GB;
}
else
return 0;
}
Run Code Online (Sandbox Code Playgroud)
语言是char …
使用Chrome网上应用店内联安装(https://developers.google.com/chrome/web-store/docs/inline_installation),可以指定在chrome.webstore.install()
成功安装扩展程序时执行的回调.
通过一些非常繁琐的调试,我了解到在执行回调时不必100%安装扩展 - 可能是后台尚未加载或内容脚本尚未可用.
在我的特定情况下,问题以这种方式出现:
chrome.webstore.install()
绑定到onclick
事件的安装按钮.第3步是问题所在.有时在内容脚本完全加载之前会注入iFrame,因此不会注入任何脚本(内容脚本仅注入新创建的iFrame内,而不是在安装/启用扩展时已存在的iFrame).
我知道有可能的解决方法,例如扩展本身注入iFrame或简单setTimeout()
,但为了帮助其他人,我认为值得提问:
如果chrome.webstore.install()
回调无法确保,我怎么能确定扩展是100%安装的呢?
使用检查用户是否安装了某个扩展程序中<img>
描述的着名加载方法无法可靠地工作(对于那些认为是解决方案的人).
我在使用YouTube嵌入式工作时遇到了一些问题.
我正在使用YouTube API加载视频.在加载的视频之上,我有一个自定义控件<div>
(透明),只有一个播放按钮(an <img>
).这样做是为了隐藏默认的YouTube播放器,该播放按钮与网站上其他设计一致.
在<div>
覆盖整个加载的iFrame,因此玩家本身无法点击-我用了一个点击事件<div>
开始播放视频,而不是:
// Inside onYouTubePlayerAPIReady():
var player = new YT.Player(playerId, {
height: height,
width: '100%',
videoId: videoId,
playerVars: {
html5: '1',
controls: '0',
rel: '0',
showinfo: '0',
modestbranding: '1',
theme: 'light',
color: 'white',
wmode: 'transparent',
suggestedQuality: "large"
}
});
$(".youtube-player-controls").bind("click", function(e){
if (!player || !player.getPlayerState) return false;
if (player.getPlayerState() == YT.PlayerState.PLAYING) player.pauseVideo();
else player.playVideo();
return false;
});
Run Code Online (Sandbox Code Playgroud)
在iPhone上工作正常,但在iPad(以及Android似乎)上,视频切换到视频的第一帧,但随后在缓冲状态下停止(通过检查player.getPlayerState()
).
我尝试启动player.loadVideoById()
不起作用的视频(相同的错误).
如果我删除重叠的控件<div>
,从而允许用户实际点击视频,它工作正常.
有关如何使用Javascript API播放视频的任何建议?
编辑:
我稍微更改了嵌入代码,即我添加了 …
我目前正在实现一个基于PDF.js的PDF查看器,作为我了解promise对象的一部分.
我还了解到调试控制台中不会自动显示运行时错误:
PDFJS.getDocument(...).then(
function(pdfDocument){
alert(UndefinedVariable); // Not shown in console!
},
function(error){
console.log("Error occurred", error);
}
);
Run Code Online (Sandbox Code Playgroud)
除了.done()
在http://www.asyncdev.net/2013/07/promises-errors-and-express-js/中描述的添加之外,我还没有找到在promise函数中显示运行时错误的漂亮方法.(这对PDF.js不起作用)或添加.catch(function(error){ console.error(error); })
.
我知道我可以在调试器中打破运行时错误的异常,但是我也可以通过这样做来打破其他异常(在jQuery中),这意味着我必须在每个页面加载时执行5个jQuery异常,然后我才能检查我自己的代码是否包含运行时错误.
有没有办法强制promise函数像正常一样记录运行时错误(没有为每个函数调用编写额外的代码)?
一段时间以来,我一直在使用chrome.runtime.sendMessage(message, callback)
内容脚本中的消息,这些消息需要在收到后台响应后运行回调函数。
我还有一个长期连接,用于从后台向内容脚本发送消息(而不是对内容脚本发起的消息的响应):
backgroundPort = chrome.runtime.connect({ name: "contentScript" });
backgroundPort.onMessage.addListener(function(message){
if (message["action"] == "something"){
// Do stuff
}
});
Run Code Online (Sandbox Code Playgroud)
据我所知,backgroundPort.postMessage()
不支持回调消息,这意味着具有回调的消息需要使用chrome.runtime.sendMessage()
.
这种方法的问题在于,在每条消息的内容脚本/背景之间建立新的连接会产生大量开销,因此我尝试通过将回调功能添加到现有的长期连接中backgroundPort
,但它变得很友好的凌乱。
谁能想出一个优雅的解决方案?
使用SetWindowLong()
并且WS_EX_NOACTIVATE
我已经使一个窗口不可激活。
我做了一个迷你项目来重现该问题:http://s000.tinyupload.com/index.php? file_id=78888532457762447347
基本上是一个具有两个窗口的 WPF 应用程序:
主窗口
// XAML code
<Window x:Class="CS_test.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Background="LightGray" Height="300" Width="400">
<Grid>
<TextBox Width="300" Height="200"></TextBox>
</Grid>
</Window>
// C# code
namespace CS_test
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
new NonActiveWindow().Show();
}
}
}
Run Code Online (Sandbox Code Playgroud)
非活动窗口
// XAML code
<Window x:Class="CS_test.NonActiveWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="NonActiveWindow" Height="300" Width="300"
Loaded="Window_Loaded">
<Grid>
</Grid>
</Window>
// C# code
namespace CS_test
{
public partial class NonActiveWindow : Window …
Run Code Online (Sandbox Code Playgroud) 试试跑步
<?php
echo filemtime("test.txt")."\n";
sleep(4);
file_put_contents("test.txt", "test");
echo filemtime("test.txt")."\n";
?>
Run Code Online (Sandbox Code Playgroud)
对我来说打印的命令行:
1343490984
1343490984
Run Code Online (Sandbox Code Playgroud)
那可能不对,可以吗?
我找到了一个关于我的问题的线程(shell - 不同版本的UNIX排序处理案例不同),但它给出了"相反"的答案.
我已经搞乱了LANG变量,但似乎无法找到实现我目标的值.
举例来说:
abc a
Abc d
Abc b
abc e
abæ g
Run Code Online (Sandbox Code Playgroud)
需要分类到:
abc a
abc c
Abc b
Abc d
abæ g
Run Code Online (Sandbox Code Playgroud)
不是这个(这是我目前得到的):
Abc b
Abc d
abc a
abc c
abæ g
Run Code Online (Sandbox Code Playgroud)
而不是这个(这是我在不区分大小写时得到的):
abc a
Abc b
abc c
Abc d
abæ g
Run Code Online (Sandbox Code Playgroud)
换句话说:我希望每列具有区分大小写的排序,其中大写起始字母的单词未在顶部排序,同一单词的大写/小写版本不会混合在一起,具体取决于第二列.
请注意,我需要UTF-8敏感排序(在这种情况下,我使用丹麦字母"æ",它放在字母表中,如下所示:"...vwxyzæøå").
我使用以下方法对两列进行排序:
sort test.txt -k1,1 -k2,2
Run Code Online (Sandbox Code Playgroud)
我可以用任何方式在不诉诸剧本的情况下做到这一点吗?
我正在为tinyMCE制作一个单词预测插件,需要提取一些文本,然后从预测单词列表中插入文本.插入应该没问题,因为我知道光标在哪里并且可以使用该mceInsertContent
命令.获取预测的文本但是......
我需要提取文本的一个子集,该文本以光标位置之前的字母结尾,并从文本的开头开始.如果需要,我可以自己剥离HTML标签,但我更喜欢让tinyMCE尽可能地做.
我想这样做:
mceInsertContent
现在,因为我不熟悉那些对我来说有点挑战的tinyMCE,所以怎么会这样做呢?
代码需要跨浏览器工作.
我正在尝试使用GetWindowRect()
(和GetGUIThreadInfo()
)获得插入符号位置:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Runtime.InteropServices;
namespace WpfApplication1
{
public class CaretInfo
{
public double Width { get; private set; }
public double Height { get; private set; }
public double Left { get; private set; }
public double Top { get; private set; }
public CaretInfo(double width, double height, double left, double top)
{
Width = width;
Height = height;
Left = left;
Top = top;
}
} …
Run Code Online (Sandbox Code Playgroud)